
连接数据库 mysql -u root -p密码show databases;用于列出sql数据库中的数据列表一般information_schemasysporformance_schema,mysql这4个是默认数据库的creah database database_name;用于创建数据库drop database database_name;用于删除数据库Alter table table_name modify column 属性名 属性类型;改变表中字段类型use database_name;使用这个use的数据库名接下来的sql指令都只会指向这个数据库creah table_name(属性名 属性类型 完整性约束条件,属性名 属性类型 完整性约束条件...);在数据库中添加表记住先使用use 指定哪个库show table_name; 这个不同版本有可能不能用可用desc替换show这个是查看列表的属性名属性类型约束条件属性类型各外数据可不可以为NULL与默认值查询备注信息show index from table_name;这是查询表的详细信息比show table_name更详细show tables;这个是查询数据库中表的名字前提是先用use指定那个库约束条件语句not null语句不能为空值unique唯一性的约束就是属 性的值不能一样“default 默认值”这是如果表中没有值的时候返回默认值create table tb_dept1- (- dept1_id int(10) primary key,- name varchar(25),- location varchar(25)- );create table tb_emp5- (- id int(10) primary key,- name varchar(25),- deptid int(11),- salary float,- constraint fk_emp_dept1 foreign key(id) references tb_dept1(dept1_id)- );》上述的是外键的使用语句外键能更好的管理表和查询表就是可以让表与表之间创造联系性一般使用“jion”语句查看关联信息》constraint fk_emp_dept1这个是两个表之间的联系名删除它就可以》断开这两个表的联系 用{ALTER TABLE tb_emp5 DROP FOREIGN KEY fk_emp_dept1}语句这这两个表之间的联系就能断开》“select tb_emp5.name,tb_dept1.name from tb_emp5 inner join tb_dept1 on tb_emp5.deptid tb_dept1.id;”这个是用inner join内连接语句查询就是要对应的id信息》left jion左连接“select students.student_name,classes.class_name from students left jion classes on students.class_id classes.class_id”就是拿学生的名字信息去对应班级如果没有分配班级班级信息返回null值》right jion右连接)”select students.student_name,classes.class_name from students right jion classes on students.class_idclasses.class_id;”也就是用班级名称访问班级学生信息如果没有学生就返回null值表与表之间的相关查询select table_name1.*,table_name2.* from table_name1 join table_name2 on table_name1.属性名 table_name2.属性名 where table_name1.属性名属性的值;drop table table_name;这是删除数据库中表的语句alter table 表名 dorp 属性名;删除字段Insert into table_name(field1,field2...feildN) values (values1,values2...valuesN)例如 insert into bac (id,name,sex,bir,age) values (9,骚白,男,2017-10-1,26);插入语句作用是可向表里面插入信息Select columns1,columns2...columnsN from table_name;这个是查询表中的字段的语句如果字段处是“*”就是表明查询所有字段alter table 旧表名 rename 新表名;修该表名alter table 表名 modify 属性名 数据类型;修改字段的数据类型alter table 表名change 旧属性名 新属性名 新的属性类型修改字段名alter table 表名 add 属性名 数据类新 性约束条件;alter table add foreign key(user_id) references 主表名(字段名)增加字段alter table 表名 drop 属性名;删除字段where语句通常是与编程的if语句一样输出满足where后面语句的进行输出例如select * from table where id1;update table_name set feild1new_value1,feild2new_value2...feildNnew_valueN更新语句updata这是对指定的字段进行更新但是会让整个字段进行更新值可以使用where语句来精准更新哪个字段delete from table_name删除表的说有内容也可以使用where语句指定删除对象delete from table_name where feild_namevalue使用where语句指定删除对象[NOT] in语句select id,name,age from students where age in (17,19);这个作用是列出年龄为1779的元素注意这是集合不是区间范围[NOT] BETWEEN 取值1 AND AND 取值2;select id,name,age from students where age betrween 18 and 19;这个为取值范围上述可得取年龄为171819like匹配查询[NOT] like “字符串”select * from table_name where name like “小五”查询名字是小五的信息没有通配符的情况下like和等于是同样的Like的通配符“%”和“_”“and”与“”是一样的如果其中一个不符合就不会输出结果select * from table_name where age17 name like “唐%”;select * from table_name where age17 and name like “唐%”;输出的结果都是一样的“or”语句sclect * from table where id5 or in(1,2,3) and age16;AND与OR的运算优先级AND要比OR先运算limit限制查询结果数量Limit不指定初始位置从第一条记录开始显示通过索引标记指针sclect * from table_name where limit 4,6;也就是在第5行往下输入6行数据包括第5行order by 属性名 [ASC][DESC]语句用以排列升降序的sclect * from table_name where order by age desc;以年龄做比较以大到小开始排序输出Select * from table_name where order by age desc limit 2,5;使用的是在以年龄降序的情况下以第3行开始输出5行group by 字段名; 列如用于对age或者salary或者sex分类select 属性名 from table_name where group by 属性名;注属性名要相同不然会报错having的用法筛选group by输出的结果只能与group by联用不可单独存在select course_id,AGV(score) as average_age from scores group by course_id having AGV(score)80;上述就是在一名同学们各科成绩的平均值在与id进行分类再用having筛选出平均分在80以上的同学集合函数count()函数就是对被选中的字段进行查找数据出现次数sclect age,count(*) from table_name group by age;SUN()函数是求值的总和select sum(feild) from table_name;select age,sum(id) from table_name group by age;AVG() 求平均值select AVG(feild) from table_name;MAX() 用来查询字字段的最大值select max(feild) from table_name;MIN() 用来查询字段数据的最小值select min(feild) from table_name;正则表达式Feild_name pegexp “匹配式”;“^”用于查询特定字符串开头记录,(我在下方的唐是特定字符)select * from table_name where name pegexp “^唐”;“$” 用于查询特定字符或结尾记录select * from table_name where name pegexp”$婷”;“.”用于匹配任意位置的特定字符select * from table_name where name regexp”唐.”;“.” 和 “_”两个都可以代替任意一个字符进行查询“.”只能在正则表达式中来使用“[]”字符集合匹配所包含的区间中任意一个字符select * from table_name where bir regexp ‘[5-8]’ ;“^匹配字符”匹配指定区间字符之外的所有字符select * from table_name where bir regexp ’’[5-8]”;“字符|字符”字符的用法select * from table_name where name’[唐|胡]’;就是用来匹配有没有两个匹配字符存在进行输出“”和“*”的用法select * from table_name where bir regexp “06”这个是查询06这个组合的用法select * from table_name where bir regexp “0*”;使用就是如果是24*24先是查询24前面一位是不是2之后在查询0个或多个4之后在查询有没有24组合的值如果有就输出select * from table_name where bir regexp”24”;“”就是找这两个的组合这个值是否在数据中‘{m}’{m,n}表示的是连续出现次数Valuse{m} 表示的是valuse值连续出现m次Valuse{m,n} 表示的是valuse值连续出现m次或者n次运算符基本运算符运算 - * / % div() mod()select 55,6-4,5*5,10/5,9 div 3,9%2,mod(9,2);逻辑运算符 与AND或或OR或||非NOT或!异或XOR与 都要真一个假或者未知都不行或 只要有一个真就行 未知和假有一个没啥事异或 只要两个相同就返回真非 是一元运算就是只有一个值是1的时候它返回0是0的时候它返回1运算符优先级! , ~ , -符号,^ , * , / , % ,-减号,, ,,,|,比较运算 ,,,,,,!,IS,BETWEEN,CASE,WHEN,ELSE,NOT,,AND,XOR,||,OR,赋值运算:注释符单行注释“#注释内容”单行注释 “”__ 注释内容 ””注下滑线后有空格多行注释 “/*注释内容*/”组合查询union查询返回不可重复查询表的字段必须一样查询数据必须互相兼容并操作select 1 union select 2 union select 3;order by 与select用法 select * from order by 4;就会返回4列的字段如果没有4行字段就会报错实际运用select * from table_name where id1 and 12 union select 1,2,3,4;上述sql语句就是对sql的每行查询看比较符是“”但是1不等于2返回0假不返回数据之后union select 插入1234这个数据嵌套查询NOTIN、ANY、ALL、[NOT] EXISTS不可以使用order by 子句子查询要拿括号括起来select * from student where student_id in (select student_id from scores where scores 90);列出在在学生student_id表中选取分数在90分以上的同学select * from employee_name,salary from employees where aslary any(select salary from empoloyees where departeme ”销售”);上述代码是对员工表中的选取任意一位员工的工资大于销售的select * from employees where salary all (select salary from employees where department”HR”);代码表示的是当前员工薪资大于子查询的HR部门所有员工的薪资才会被筛选给出来select cloumns from tables_name where exists (subquery);subquery是一个表此代码目的是查询tables_name中有没有值返回如果有就是true如果没有就返回false查询函数查询系统用户名system_user()查询用户名user()查询当前用户名current_user()查询连接数据库用户名session_user()查询数据库名tablabases();查询数据库版本version()读取数据库路径SHOW VARIABLES LIKE ‘%basedir%’;查询mysql安装路径SHOW VARIABLES LIKE ‘%char%’查看当前系统版本select version_compile_os;其它相关函数left(s,n) #返回字符串s最左边的字符 n是个数right(s,n) #返回字符串s最右边的字符substr(s,n,len) mid(s,n,len)#截取字符串s的第n个字符且截取长度为lenlpad(string,length,’str2’) rpad(string,length,’str ’)#string需要填充的字符串 length填充之后的总长度 str:填充字符串默认空格LOCATE(‘str ’,’str1’) LOCATE(str,str1pos) locate(‘a’,’locala’,5)#返回str在str1中第一次出现的位置 pos--从pos位置开始检索insert(str1,pos,len,str2)#str1:指定字符串 pos:开始被替换的位置 len:被替换字符串长度 str2:新字符串instr(field, str)#返回field字符串中出现str字符串的位置position(str1 in str2)#返回字符串中第一次出现的子字符串的位置若没有返回0判断当前用户的第一字符查询语句select left(user(),1)’r’;判断当前用户的最后一个字符查询语句select right(user(),1)’r’;#正确返回1错误返回0截取当前数据第二个字符是否为r查询语句select substr(database(),2,1)’r’;select mid(database(),2,1)’r’;#正确返回1错误返回0concat(str1, str2,...) select concat(“abc”,NULL,”fg”) NULL#返回结果为连接参数产生的字符串concat_ws(separator, str1, str2, ...) select concat_ws(“”,”123”,”345”) 123345#用第一个参数作为连接符号将字符串连接group_concat(str1)#将group by产生的同一个分组中的值连接起来返回一个字符串if(expr,v1,v2) select if(12,1,0);#expr:条件 满足条件返回V1不满足条件返回V2case when expr then v1 else v2 end#满足expr则返回V1不满足则返回V2sleep(N)#执行select sleep(N)可以让此语句运行N秒oct() #转换为8进制 ord() 返回第一个字符串的第一个字符的ascii值hex() #转换为16进制char() #转换为字符串ascii() #ASCII值数据库函数information_schemainformation_schema 用于存储数据库元数据(关于数据的数据)例如数据库名、表名、列的数据类型、访问权限等。获得数据库名等信息information_schema.schemata获得相关信息创建时间表的类型等information_schema.tables获得的信息包括列名数据类型是否为主键等information_schema.cloumns