*要以 ; 结束
*在终端写代码时,先写在记事本里,这样写错后容易修改
*sql语言中,等于就是 =
查看具有哪些数据库showdatabases;创建数据库createdatabase数据库名称(charset字符集);删除数据库dropdatabase数据库名称;选择库
选择库use库名;查看数据库下的所有表showtables;创建表 creattable表名(字段名 数据类型 约束, ······);eg.createtableuser(idintkeyauto_increment,namechar(20)notnull,`年龄`int);#如果使用了中文,窗口报错,出现 ERROR 1300 (HY000): Invalid utf8 character string: '\xC4\xEA\xC1\xE4'#就临时改一下字符 mysql> set names gbk;产看表结构descuser;一、数据的增,删,改,查
1.添加数据
insert[into]表名(字段名,···)values(值,···);eg.insertuser(name,age,sex)values("貂蝉",2,"女"),("吕布",3,"男"),("董卓",53,"男"),("黄忠",77,"男"),("诸葛亮",36,"男"),("刘备",55,"男");2.修改数据
update表名set字段名=修改的值,···where条件;-- (空格)这里就可以写注释了#where 条件:指定的数据eg.updateusersetname="貂蝉"whereid=3;idin(6,8,10);id>=5andid<=10;idbetween5and10;3.删除数据
deletefrom表名;#将表中的所有数据全部删除,但是不会影响表的自增属性(比如表的id还会接着删除掉的数据继续增加)truncate表名;#清空所有表数据,可以清空自增属性(表的id会重新从1开始)deletefrom表名where条件;4.查询数据
select*from表名;-- 查询所有数据select列名,列名,···from表名;-- 查询指定列selectnamefrom表名where条件;给列或者表去别名,as可省略--> 就是给列重新取一个名字,在显示出来select列名as别名,列名as别名from表名as别名;分页查询select列名,···from表名limit起始值,每页显示的条数;#起始值:开始查询数据的位置,默认为0,可省略排序查询select列名,···from表名orderby列名asc(升序)/desc(降序);模糊查询:只知道查询条件中的一部分信息select列名,···from表名where条件 (not)like模糊条件;#模糊条件:%:表示0/多个字符 _:表示一个字符 eg.查名字中带a的名字:selectwherenamelike"%a%";select*fromempwheredeptno=(selectdeptnowherename="swith")orderbysaldesc;聚合查询
对查到的数据进行一些函数处理
select聚合函数(列名),···from表名;最值:max()/min()eg.selectmax(score)最高成绩fromstudent;-- 查询student表中,score的最高值平均值:avg() 总和:sum() 统计: count(*):统计所有记录和 count(列名):统计该列中,所有值不为NULL的记录总和 eg.selectcount(score) 总记录fromclass;-- class表中score列所有不为空的数据的总和 分组查询select聚合函数()from表名where条件groupby列名having对分组后的数据再进行筛选的条件;eg.selectsex 性别,count(*)总人数fromstudentgroupbysex;-- 查询student表中,男生和女生各有多少人联合查询
将多个查询结果合并在同一个表中
select列名,···from表名1union/unionallselect列名from表名2;eg.select*fromempwheresal>2800union(用unionall会有重复)select*fromempwherejob="manager";-- 查找薪资大于2800 或 职位为管理员的人其他常见的函数
selectdatabase();#常看当前的数据库名称selectuser():#常看当前的用户名和主机名二、据库的用户管理和权限分配
创建用户createuser'用户名'@'主机名'identifiedby"密码";授权所有权限grantallprivilegeson*.*to"用户名"@"主机名";#刷新权限flushprivileges;授权指定wd库的指定权限select,update,insertgrantselect,update,insertonwd.*to"用户名"@"主机名";#刷新权限flushprivileges;撤销权限revoke权限列表on数据库名,表名from"用户名"@"主机名";查看权限showgrants;删除用户dropuser"用户名"@"主机名";三、数据的备份
mysqldump-u用户-p用户的密码-h主机 要备份的数据库名称>存储的路径 文件名称:xx.sqleg.mysqldump-uroot-proot-h127.0.0.1x01>d:/x01.sql-- 备份单个库mysqldump-uroot-proot-h127.0.0.1x01 y01>d:/y01.sql-- 备份单个表mysqldump-uroot-proot-h127.0.0.1--databases x01 x001 > d:/x01_x001.sql #备份多个库mysqldump-uroot-proot-h127.0.0.1--all-databases > d:/all.sql #备份所有库四、还原备份的数据文件
如果备份库时,里面有创建库的命令,则不再需要单独创建一个库
#先要有备份好的数据文件C:\Users\CZJ>mysqldump-uroot-proot-h127.0.0.1x01>d:/x01.sql#进入数据库C:\Users\CZJ>mysql-uroot-proot#创建一个新的数据库来存储还原的数据mysql>createdatabasex1;#进入创建好的新数据库mysql>usex1;#还原数据文件mysql>source d:/x01.sql;