MySQL语句

    xiaoxiao2021-03-25  101

    SQL语句

    MYSQL查询语句大全集锦

    1:使用SHOW语句找出在服务器上当前存在什么数据库: mysql> SHOW DATABASES;

    2:创建一个数据库MYSQLDATA mysql> CREATE DATABASE MYSQLDATA;

    3:选择你所创建的数据库 mysql> USE MYSQLDATA; (按回车键出现Database changed 时说明操作成功!)

    4:查看现在的数据库中存在什么表 mysql> SHOW TABLES;

    5:创建一个数据库表 mysql> CREATE TABLE MYTABLE (name VARCHAR(20), sex CHAR(1));

    6:显示表的结构: mysql> DESCRIBE MYTABLE;

    7:往表中加入记录 mysql> insert into MYTABLE values (”hyq”,”M”);

    8:用文本方式将数据装入数据库表中(例如D:/mysql.txt) mysql> LOAD DATA LOCAL INFILE “D:/mysql.txt” INTO TABLE MYTABLE;

    9:导入.sql文件命令(例如D:/mysql.sql) mysql>use database; mysql>source d:/mysql.sql;

    10:删除表 mysql>drop TABLE MYTABLE;

    11:清空表 mysql>delete from MYTABLE; 12:更新表中数据 mysql>update MYTABLE set sex=”f” where name=’hyq’; 以下是无意中在网络看到的使用MySql的管理心得, 在windows中MySql以服务形式存在,在使用前应确保此服务已经启动,未启动可用net start mysql命令启动。而Linux中启动时可用“/etc/rc.d/init.d/mysqld start”命令,注意启动者应具有管理员权限。 刚安装好的MySql包含一个含空密码的root帐户和一个匿名帐户,这是很大的安全隐患,对于一些重要的应用我们应将安全性尽可能提高,在这里应把匿名帐户删除、 root帐户设置密码,可用如下命令进行: use mysql; delete from User where User=””; update User set Password=PASSWORD(’newpassword’) where User=’root’; 如果要对用户所用的登录终端进行限制,可以更新User表中相应用户的Host字段,在进行了以上更改后应重新启动数据库服务,此时登录时可用如下类似命令: mysql -uroot -p; mysql -uroot -pnewpassword; mysql mydb -uroot -p; mysql mydb -uroot -pnewpassword; 上面命令参数是常用参数的一部分,详细情况可参考文档。此处的mydb是要登录的数据库的名称。 在 进行开发和实际应用中,用户不应该只用root用户进行连接数据库,虽然使用root用户进行测试时很方便,但会给系统带来重大安全隐患,也不利于管理技 术的提高。我们给一个应用中使用的用户赋予最恰当的数据库权限。如一个只进行数据插入的用户不应赋予其删除数据的权限。MySql的用户管理是通过 User表来实现的,添加新用户常用的方法有两个,一是在User表插入相应的数据行,同时设置相应的权限;二是通过GRANT命令创建具有某种权限的用 户。其中GRANT的常用用法如下: grant all on mydb.* to NewUserName@HostName identified by “password” ; grant usage on . to NewUserName@HostName identified by “password”; grant select,insert,update on mydb.* to NewUserName@HostName identified by “password”; grant update,delete on mydb.TestTable to NewUserName@HostName identified by “password”; 若 要给此用户赋予他在相应对象上的权限的管理能力,可在GRANT后面添加WITH GRANT OPTION选项。而对于用插入User表添加的用户,Password字段应用PASSWORD 函数进行更新加密,以防不轨之人窃看密码。对于那些已经不用的用户应给予清除,权限过界的用户应及时回收权限,回收权限可以通过更新User表相应字段, 也可以使用REVOKE操作。 下面给出本人从其它资料(www.cn-java.com)获得的对常用权限的解释: 全局管理权限: FILE: 在MySQL服务器上读写文件。 PROCESS: 显示或杀死属于其它用户的服务线程。 RELOAD: 重载访问控制表,刷新日志等。 SHUTDOWN: 关闭MySQL服务。 数据库/数据表/数据列权限: ALTER: 修改已存在的数据表(例如增加/删除列)和索引。 CREATE: 建立新的数据库或数据表。 DELETE: 删除表的记录。 DROP: 删除数据表或数据库。 INDEX: 建立或删除索引。 INSERT: 增加表的记录。 SELECT: 显示/搜索表的记录。 UPDATE: 修改表中已存在的记录。 特别的权限: ALL: 允许做任何事(和root一样)。 USAGE: 只允许登录–其它什么也不允许做。


    mysqld -install 安装mysql到计算机服务在中 mysqld -remove 卸载计算机服务中的mysql net start mysql 开启mysql服务 net stop mysql 停止mysql服务 mysql -h localhost -u root -p mysql -u 用户名 -p 密码

    要求你输入自己连接数据库的用户名和密码。 考虑密码如果直接明文写在这条命令行上,有些不方便(怕被别人看到),可以像你写的那样,只输入:mysql -u 用户名 -p 然后回车,此时提示你输入密码,这时候输入的密码就不再是明文的了。

    show databases; show create database mydb2; show tables;

    use 数据库名;


    create database 数据库名; create database 数据库名 character set UTF8; create database if not exists 数据库名 character set UTF8; create table if not exists 表名 ( varchar(20) 字段名 not null, varchar(20) 字段名 not null ); create table if not exists employer( id int, name varchar(20) primary key auto_increment,//mysql特有自动增长 gender varchar(6) unique,//唯一约束 brithday date, entry_date date, jop varchar(30), salary float(5,1), resume text );

    //外键

    create table if not exists person( id int primary key auto_increment,wa name carchar(20) not null ); create table if not exists card( id int primary key auto_increment, location varchar(20) not null, pid int, constraint pid_FK for foreign key(pid) references person(id) )

    //修改表数据(表内的数据修改)

    update user set salary='12133'; update user set salary='12133',sex='男'; update user set salary='8000' where username='玛丽'; update user set salary=salary+1000 where username='jack';

    //插入数据

    insert into user(id,name,password,birthday) values(1,'jack','111111','2015-4-3');

    //删除

    drop database if exists mydb1; drop table if exists mydb1;

    //删除表中数据

    delete from user where name='jack'; delete from user;

    //truncate删除表中记录

    truncate table user;

    //查询表中数据

    select * from 表名; select id,name,math,chinese from student; select distinct english,name from student;//去除重复的数据 select name,math+10 from student;//在所有学生数学成绩加10分 select name as 姓名,math+10 as 数学 from student;//使用别名 select name,math+chinese+english as 总分 from student; select * from student where name='晓明'; select * from student where english>90; select name chinese,english,math as 总分 from student where chinese+math+englis>120;

    //分页查询

    select * from user limit 0,10;//前一个参数代表第几条记录的索引号,后一个是每页显示的记录数 select * from student where english<>80; select * from student where english>=80 and english<=90; select * from student where english between 80 and 90; select * from student where math=89 or math=90 or math=91; select * from student where math in(89,90,91); select * from student where math not in(89,80,91); select * from student where name like '张%';//(%代表零个或多个任意字符,_代表一个字符) select * from student where name like '%%';//在网站中,多条件查询中使用 select * from student where math is null; select * from student where math is not null; select * from student where math>80 and chinese>80; select * from student where math>80 && chinese>80; select * from student order by math;//查询后 升序排序 select * from student order by math msc;//查询后 升序排序 select * from student order by math desc;//查询后 降序排序 select * from student where name like '李%’ order by math+chinese+english as desc; select count(*) as 总人数 from student;//求出行数即记录数 select count(*) from student where math>80; select count(*) from student where (chinese+english+math)>100; select sum(math) from student;//求和 select sum(math) as 数学总分,sum(chinese) as 语文总分,sum(english) as 英语总分 from student;//求和 select sum(math)+sum(chinese)+sum(english) as 总分 from student;//求和 select sum(chinese)/count(*) from student;//求平均分 select avg(math) as 数学平均分 from student; select sum(chinese)+sum(math)+sum(english)/count(*) from stident; select avg(chinese+math+english) from student; select max(math) from student; select min(english),max(chinese) from student; select sum(price) as from user group by product;//分组查询 select product ,sum(price) from orders group by product having sum(price)>100;

    //多表联合查询

    select d.name as 部门名,e.name as 员工名 from department as d,employer as e where d.name='软件部';

    //嵌入查询

    select name as 员工名 from employer where did=( select id from department where name='软件部'

    //一些函数

    select datediff('2015-12-31',now());//距离年底多少天 select substring('mysql',1,2);//截取字符串,从1开始到2 select format(3.141592653,3);//保留小数点后2位(四舍五入) select floor(3.14);//向下取整 select rand();//取随机数select format(rand(),2);

    //随机产生’a’-‘z’之间的随机整数

    (1)查询'a'-'z'的对应的Unicode值 select ascii('a');//97 select ascii('z');//122 (2)产生97-122之间的随机整数 select floor(rand()*26)+97; (3)产生97-122之间的随机整数 select char(floor(rand()*26+97);

    //加密 select md5(‘123456’);

    //流程控制函数

    1)select if(salary>=5000,'高薪','起薪') from user; 2) select naem,ifnull(salary,'无薪') from user; 3) select case when salary>=5000 then '高薪' else '起薪' end from user; 4) select case salary when 7000 then '高薪' when 6000 then '中薪' from user;

    //查看数据库的编码方式 status //查看表的结构 desc 表名;

    //删除主键 alter table user drop primary kry; //修改数据库的编码方式 alter database if exists mydb character set gbk; //修改表结构

    alter table employer add image blob;//增加列 alter table employer modify jop varchar(60) default 'techer';//修改列属性 alter table employer drop gender;//删除列 alter tale user change column name username varchar(20);//修改列名

    //改表名 rename table employer to user; //修改表的字符集

    alter table user character set UTF8; alter employer

    //备份(不要在mysql中使用) mysqldump -u root -p mydb1 > d:\mydb1.sql //还原(在mysql环境中使用) source d:\mydb1.sql;


    一些数据类型 (1)Date/Datetime/TimeStamp (2)varchar(变长)/char(定长) (3) tinyblob/blob/mediumblob/longblob–>255B/64K/16M/4G大小的图片、音乐数据等二进制数据 tinytext/text/mediumtext/longtext–>255B/64K/16M/4G大小的文本数据 (4)bit(M) int float(M,D)M位数,D小数位


    jdbc中的存储过程 drop procedure if exists add_pro;//删除存储过程,如果存在

    delimiter // //把mysql默认的结束符;改成// //创建存储过程,前两个为参数,后一个sum为返回值 create procedure add_pro(a int ,b int ,out sum int) begin set sum=a+b; end; //

    delimiter ; //结束符修改回来

    事务的概念 启动事物 start transaction;

    ……一连串的sql语句

    提交事物(以上sql要么一起成功,要么一起失败) commit;

    回滚事物 rollback;

    设置事物的隔离级别 set transaction isolation level *; 隔离级别别 read uncommitted /read committed/ repeatable read/ serializable 脏读 解决 解决 解决 不可重复读 解决 解决 虚读 解决 select @@tx_isolation;//查看当前事物的隔离级别

    转载请注明原文地址: https://ju.6miu.com/read-17617.html

    最新回复(0)