SQL基础语法
创建、删除库:
//创建新数据库
CREATE DATABASE 数据库名;
//删除数据库
DROP DATABASE 数据库名;
增加:
1、添加列名、设置主键、设置自动增长列
primary key表示当前列为主键列,不能重复,不能为空
out_increment表示当前列为自动增长列,由DBMS分配该列的值,可以保证不重复
CREATE TABLE t_user(
id INT PRIMARY KEY AUTO_INCREMENT, //编号
userName VARCHAR(20),//用户名
birthday DATE,//生日
tel CHAR(11),//电话
//枚举类型,该列的值只能取男和女
sex ENUM('男','女'),
// 性别 -- 最后一列不能加“,”
money INT //账户余额
);
2.添加行(新增记录)
①如果添加多条信息,中间用","分割。VALUES只用写一次,写在表头和表值之间。
②如果列名和列的值不写,则默认添加为空(null),如果数据库设计时存在默认值,则为添加默认值。
INSERT INTO t_user(表1,表2) values(值1,值2);
例如:
INSERT INTO t_user(userName,pwd,birthday,tel,sex,money)
VALUES ('张三','123','1980-05-09','13948577789','男',2000);
例如:
INSERT INTO t_student(userName,pwd,birthday,tel,sex)
VALUES('李四','111','1998-01-01','13112341234','男');
3.添加列(维护常用)
// t_student:表名;address:表头
ALTER TABLE t_student ADD address VARCHAR(50);
删除:
1.删除表
// t_user:表名
DROP TABLE t_user;
2.删除列
// t_student:表名;userAddress:列名
ALTER TABLE t_student DROP COLUMN userAddress;
3.删除行(记录)
//如果不加where 后面的条件则全部删除
DELETE FROM t_user WHERE id=2;
修改:
1、修改列
修改列的值必须与修改后的类型相符,如果修改列的值为null,则可以改为任意类型。如果修改列的值类型为varchar,最长为20,则修改后的类型必须为char类型,长度不能低于20。
ALTER TABLE t_student CHANGE address userAddress VARCHAR(100);
2、修改值
UPDATE t_product SET 修改列名=修改后新值 WHERE id=1;
//修改,将张三的密码修改为333,工资修改为2500
UPDATE t_user SET pwd='333',money='2500' WHERE userName='张三';
查询:
1、查询表中所有数据
表示显示所有的列,也可以指定显示列的列表,中间用","分割。
SELECT * FROM t_user;
// 例如(显示姓名和工资列):
select userName,money from t_user
2、查询返回限定行
第一个参数为起始记录数,从0开始,第二个参数为显示记录数
// MySQL语法
SELECT * FROM t_student LIMIT 0,3;
3、查询空值null
null不能用=,只能用is null 或 is not null
SELECT *FROM t_student WHERE money IS NULL;
4、查询多条信息(or/in)
// 查询张三和李四的信息
SELECT * FROM t_student WHERE userName='张三' OR userName='李四';
SELECT * FROM t_student WHERE userName IN('张三','李四');
5、模糊查询(_或%)
//查询姓李的二个字的员工
SELECT * FROM t_student WHERE userName LIKE '李_';
// 查询出所有商品名包括“糕”的商品的信息
SELECT * FROM t_product WHERE productName LIKE '%糕%';
6、查询多条件+显示部分(LIMIT)
// 查询前5条价格在100-1000的酒类商品 (MySQL语法)
SELECT * FROM t_product WHERE productType='酒类' AND price>=100 AND price<=1000 LIMIT 0,5 ;
7、查询去除重复的类名(distinct)
// 查询所有的性别,distinct 表示去除重复记录
SELECT DISTINCT sex FROM t_student;
8、查询排序显示(ORDER BY)
//按员工工资排序,默认为升序ASC,降序需要加上DESC。
// 工资相同,按年龄大小排序。
SELECT * FROM t_student ORDER BY money DESC,birthday;
9、查询当前日期
select curdate() from 表名
关联查询:
内连接:INNER JOIN 、CROSS JOIN
img(1)形式一
select 字段列表
from A表 inner join B表
on 关联条件
【where 其他筛选条件】
说明:如果不写关联条件,会出现一种现象:笛卡尔积
关联条件的个数 = n - 1,n是几张表关联
on只能和join一起用
(2) 形式二
select 字段列表
from A表 , B表
where 关联条件 【and 其他筛选条件】
外连接:左外连接(LEFT OUTER JOIN)
左连接:
第一种结果:A
imgselect 字段列表
from A表 left join B表
on 关联条件
第二种结果:A - A∩B
imgselect 字段列表
from A表 left join B表
on 关联条件
where 从表的关联字段 is null
右外连接(RIGHT OUTER JOIN)
第一种结果:B
imgselect 字段列表
from A表 right join B表
on 关联条件
第二种结果:B - A∩B
imgselect 字段列表
from A表 right join B表
on 关联条件
where 从表的关联字段 is null
网友评论