语法
同样以“;”结尾
数据库不区分大小写
注释
使用单行注释 “-- ”两个横杆,一个空格
也可以采用“##”注释
多行注释采用“/**/”
sql分类
ddl:操作数据库、表、列的比如create,drop,alert,retrieve
简而言之就是CRUD(create,retrieve,update,delete)以及使用数据库
dql:查询表中的数据
DML:增删表中的数据
dcl:授权
四个基本数据库
information_schema
mysql:
performance:性能调试
test
数据库创建
列如:show create database mysql;
创建数据库:create database db1(这个是数据库名字)
同时数据库的名字是唯一的所以要执行判断
列如:create database if not exists da2;就是先判断在创建db2
这样创建可以指定它的字符集,以gbk为列
列如:create databese db character set gbk;
数据库修改
alter:修改
eg:alter database utf-8;
drop:删除
eg: drop database db4;
显示数据库名称:show database;
查询在使用的数据库
eg: select dababase ();
使用数据库:
use 数据库名称;
对于表的操作
同样有CRUD
eg: show database;
表的创建:create table 表名(列名 字符类型,列名 字符类型);
不同于C的类型,他的类型为:int,float,double,datatime,timestamp(时间戳),varchar()字符串类型,同时这个要指定最大字符, year,time等等。
表的创建、复制、修改、
eg:
create table student(
id int,
varchar(32) name,
age int,f
score double(4,1)
);
表的复制
eg:
create table 表名 like 被复制的表名;
表的修改:
eg:
修改表名
eg:
alter table 表名 rename to 新的表名;
修改表的字符集:
eg:
alter table 表名 character set 字符集的名称;
添加一列
eg:
alter table 表名 add 列名 数据类型;
修改表的名称和类型
alter table 表名 change 列名 新的列 新的数据类型;
alter table 表名 modify 列名 新的数据类型;
列的删除:
eg:drop table 表名 drop 列名;
添加数据
intsert into 表名(列1,列2,列3) values(值1,值2,值3);
如果不添加列名的话会为所有的列添加数据
删除数据
eg:
delete from 表名 [where 条件];
表的删除delete from;整个表都没了
先删除,再创建,TRUNCATE TABLE 表名;
修改数据
update 表名 set 列名 = 值, 列名 =值,where 列名;
update 表名 set 列名 = 值, 列名 =值,if 条件;
DQL查询:
select * from 表名;
语法:
select
字段列表
from
表名列表
where
条件列表
groub by
分组字段
having
分组之后的条件
order by
排序
linmit
分页限定
基础查询:
select * 字段列表
去除重复的结果集:
select distinct 表 from 表名; 要记录查询结果完全一样
select name,mathenglish,math + english FROM sthdent;这一条语句的意思是求数学加上英语的成绩之和
这个计算过程中null一旦参与运算的话结果为null,所以要进行判断,
eg:select name,math,english,math + ifnull(english,0) from student;
eg:
select name,math,english,math + ifnull(english,0) as 总分 from student;
sql运算符:
and 或&&与,sql中用and比较多
or 或|| 或
not 或!非
eg:该语句的意思式20-30之间的
select * from student where age between 20 and 30;