所有操作命令: service mysql start mysql -uroot -pok
show databases; 查看所有数据库(都是分号结尾) create database lol; 创建数据库(数据库不能直接改名 删了重来) drop database lol; 删除数据库 use Myschool; 切换到某个数据库 key不能作为列名 关键字
show tables; 查看所有表: 只显示表 具体信息不显示 describe/desc grade; 查看表结构 show create table grade; 查看建表语句 drop table if exists grade; 删除表 create table if not exists grade( 创建表:取中文名字要加特殊符号tab上面那个符号引汉字 GradeId in(4)primary key, GradeName varchar(10) ); 修改表名:alter table 旧表名 rename(to) (as) 新表名;alter是修改的意思 添加字段:alter table 表名 add 字段名数据类型; 加数组也要引起来 first第一列 after加在某个后面 不写在最后 不加符号 要是加的话注意字段名符号!!!在最后加first 或者after那个字段后; 修改字段:alter table 表名 change 原字段 新字段 数据类型;(不加符号 加的话左上角那个) 修改字段:修改列不改名字 alter table modify 字段 只有altertable这里用那个特殊符号 删除字段:alter table 表名 drop 字段名; 注意:删除时一次只能删一个!!! 查看所有修改表的结构:help alter table ;
DML:数据操作语言 insert 添加数据语句 insert into 表名 字段1,字段2 values (值1),(值2);(不写字段要全写一一对应) update 更新数据语句 update 表名 set 列=值1 where(没有from) delete 删除数据语句 delete from 表名 where insert into [字段1,字段2]values(‘值1’,…)对应即可 字段可省略 value 不加s也行
添加主键:constraint 约束 references 参考 1:表存在的时候添加主键: alter table tableName add primary key(id) 添加主键 2:表存在的时候删除主键:alter table tableName drop primary key; 删除主键 3:建表时添加主键:create table b(b_name varchar(10),b_age int(4) primary key, b_class varchar(10)); 添加外键: 1:表已经存在的情况下加外键: alter table 表1 add constraint 外键名 foreign key (表1的字段) references 表2(表2的字段) (表1字段受表2字段的约束 此时表2字段必须为主键) 因为要唯一 解释:alter table 从表 add constraint 外键(形如:FK_从表_主表) foreign key 从表(外键字段) references 主表(主键字段); 2:建表时添加外键: create table b (age int (4),name varchar(10),foreign key(name) references a(classes));前提是a中字段classes是主键。 CTRL+c 退出==exit
DQL命令: select * from 表; 查询表中所有信息 select 列1,列2 from 表; 查询指定列的值 show create table 表; 查看约束名 然后 : alter table 表名 drop foreign key 约束名; distinct 不能放在某一个字段前面 去重就全部去重 select[distinct]{| column_name [as别名][,]} from table [as 别名] round he rand()查资料 null is not null 用这个来判断 不能用=null 有null值和空是两回事 和null计算都为null select * from result where score between 80 and 90; 用between and 两边都包含80和90 round 四舍五入 rand()产生0~1不可重复的随机数 rand(n) 产生可以重复的随机数 like 模糊匹配 name like '李%'2个或者三个或者多个 '李_'两个字 '李__'三个字 where 字段 in(1,2,3) 可以多不能少 少了empty set in子查询where 字段 in (select round(rand()2+1000)); shift+ entry 在里面换行 笛卡尔集 就是两个表的组成所有可能都列出来 a100 b3 则300条 table1 as t1; join table2 on table1.id =t2.id join table3 t3 on t1.id=t3.id 1:当怎么样时操作:case 字段 when 值 then 操作 else 操作 end 判断null 要is null (可以没有else) 2: case 字段 when 值 then 操作 when 值 then操作 else end union: 联合并去重 union all: 联合不去重 表的赋值 和结构复制 testd 和tmp——testd 连接: 1内连接:两个表符合关联条件的数据才进行展示 取交集 select a.,b. from a[inner] jorn b on a.id=b.id;)(先判断)) select a.,b.* from a,b where a.id=b.id;(先产生笛卡尔集) 2外连接:主表的数据全部展示 附表只展示符合关联条件的 左外连接:以left join 左边的表为主表,关联右表的数据 右外连接:以riget join 右边的表为主表, 关联左边的数据 3全连接: 左外连接 union 右外连接 联合并去重 union all 不去重 4自连接: 自己关联自己 不用考虑外联 因为都有 加上auto_increment 自增 truncate table 表面;清空重来
select * from 表 order by 段 (desc 降序); 默认asc limit 3为0到3 左闭右开 limit3,5 3到5 如果表123456 则 45 limit 3,5=limit 5 offset 3 个数还是3,5 ??? round(253.3)四舍五入 round(5.2354,2)四舍五入保留2位小数5.24 truncate (5.363712,3)保留3位 后面u四舍五入 都截掉5.363 select count(*/lie)from 表 不计null select count(1) from 表 相当于新建了一个表叫1 每个数据都为1 就能知道多少个了 select sum(scores)/count(1) from tb_score; null 相加都等于空 ifnull(a,0)如果a空就等于0; limit加空格再加数字
DDL:数据定义语言 create drop DQL:数据查询语言 select DCL:数据控制语言 grant revoke 查询表中所有数据列结果: select * from 表;(效率低)不是form 查询表中某一项数据: select 项 from 表; 指定时:select 表.项 from 表; 给项改名: as select 项 as“嘿嘿” from 表;(as可以省略) 去重: select distinct 字段1,字段2(…)from 表名;(这里默认是all 返回所有的)
use information_schema 先输入这个再去找 整体添加一个字删除一个字 左闭右开 清空表数据 包括自增:truncate table subject; truncate 不能加where条件 默认值:default 备注:comment();表备注在括号后面 无符号:unsigned 声明该数据列不允许负数 0填充: zerofill 例如:int(3),5 则为005 主键通常加1: auto_increment 加一条数据 自动在记录上加1;