?关键字
?CREATE
创建表
create table 表名称(字段1 类型,字段2 类型);
create table hero_table ( id int,name varchar(10));
创建表并增加约束
CREATE TABLE 表名称 (
字段1 类型1 约束1 约束1,
字段2 类型2 约束2 约束2
);
完整性约束条件表
约束条件 | 说明 |
---|---|
PRIMARY KEY | 标识该属性为该表的主键,可以唯一的标识对应的元组 |
FOREIGN KEY | 标识该属性为该表的外键,是与之联系的某表的主键 |
NOT NULL | 标识该属性不能为空 |
UNIQUE | 标识该属性的值是唯一的 |
AUTO_INCREMENT | 标识该属性的值自动增长,这是MySQL的SQL语句的特色 |
DEFAULT | 为该属性设置默认值 |
⭐例子
CREATE TABLE hero_table4 (
id INT(11) NOT NULL PRIMARY KEY,
NAME VARCHAR(10) NOT NULL UNIQUE KEY
)
?使用create复制表
创建表只复制表结构及约束,但不复制数据
CREATE TABLE 复制出的表 LIKE 原表
创建表复制表结构及数据,但不复制约束
CREATE TABLE 复制出的表 AS SELECT * FROM 原表
?SELECT
SELECT 列名称 FROM 表名称
SELECT * FROM 表名称
⭐例子:
SELECT Name,Age FROM Persons
Id | Name | Age | Address |
---|---|---|---|
1 | li | 20 | Guanghzou |
2 | wang | 21 | Guanghzou |
?结果
Name | Age |
---|---|
li | 20 |
wang | 21 |
查询条数
select count(*) from 表名称
根据条件查询条数
select count(*) from 表名称 where 条件
Oracle 对表格添加rownum(有时用作对数据分页显示)
SELECT rownum,t. * FROM student t
⭐例子:
SELECT rownum,t. * FROM student t where sno >-(n-1)*10+1 and sno <-n*1 order by sno;
?WHERE
SELECT 列名称 FROM 表名称 WHERE 列 运算符 值
下面的运算符可在 WHERE 子句中使用:
操作符 | 描述 |
---|---|
= | 等于 |
<>(!=) | 不等于 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
BETWEEN | 在某个范围内 |
LIKE | 搜索某种模式 |
⭐例子
SELECT * FROM Persons WHERE Address='Guanghzou'
Id | Name | Age | Address |
---|---|---|---|
1 | li | 20 | Guanghzou |
2 | wang | 21 | Guanghzou |
3 | huang | 19 | Beijing |
?结果
Id | Name | Age | Address |
---|---|---|---|
1 | li | 20 | Guanghzou |
2 | wang | 21 | Guanghzou |
注意:WHERE后面不能放聚合函数sum()等
?UPDATE
UPDATE 表名 SET 列1 = 值1,列2=值2;
?INSERT
INSERT INTO 表名称 VALUES (值1, 值2,....)
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)
⭐例子:
INSERT INTO table1(id, Name, Address) VALUES(2, yuan, 'Beijing')
Id | Name | Age | Address |
---|---|---|---|
1 | li | 20 | Guanghzou |
?结果
Id | Name | Age | Address |
---|---|---|---|
1 | li | 20 | Guanghzou |
2 | yuan | Beijing |
?DELETE
DELETE from 表名称 where 条件
?DROP
创建表DROP INDEX 命令删除表格中的索引。
ALTER TABLE table_name DROP INDEX index_name
创建表DROP TABLE 语句用于删除表(表的结构、属性以及索引也会被删除):
DROP TABLE 表名称
创建表DROP DATABASE 语句用于删除数据库:
DROP DATABASE 数据库名称
创建表 TRUNCATE TABLE 命令(仅仅删除表格中的数据):
TRUNCATE TABLE 表名称
?ALTER
创建表添加关键字
ALTER TABLE 表名称 ADD 字段名 字段约束
ALTER TABLE 表名称 ADD COLUMN 字段名 字段约束
创建表添加索引
ALTER TABLE 表名称 ADD INDEX 索引名称 (字段名)
创建表添加主键
ALTER TABLE 表名称 ADD PRIMARY KEY (字段名)
ALTER TABLE 表名称 ADD UNIQUE KEY (字段名)
创建表添加外键约束
ALTER TABLE 需要添加外键表名称 ADD FOREIGN KEY 外键名(设为外键的字段) REFERENCES 被添加外键表名称(设为被添加外键的字段)
创建表修改字段类型时要注意字段类型的兼容性及精度,除非该列全部数据为null
ALTER TABLE 表名称 CHANGE COLUMN NAME 修改字段 修改为字段类型
ALTER TABLE 表名称 MODIFY COLUMN 修改字段 修改为字段类型
创建表修改与删除表中default
ALTER TABLE 表名称 ALTER COLUMN 字段名 SET DEFAULT '修改的值'
ALTER TABLE 表名称 ALTER COLUMN 字段名 DROP DEFAULT
创建表禁用和启用约束
ALTER TABLE 表名称 DISABLE KEYS
ALTER TABLE 表名称 ENABLE KEYS
创建表删除表字段、主键、索引、外键约束
//删除表字段
ALTER TABLE 表名称 DROP COLUMN 字段名
//删除主键
ALTER TABLE 表名称 DROP PRIMARY KEY
//删除索引
ALTER TABLE 表名称 DROP INDEX 索引的字段名
//删除外键约束
ALTER TABLE 表名称 DROP FOREIGN KEY 外键的字段名
创建表修改表名
ALTER TABLE 修改前表名称 RENAME 修改后表名称
?TRUNCATE
删除表(与drop的区别:truncate只删除数据不删除表的结构(定义),释放空间)
truncate table 表名称;
?DISTINCT
在表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。
关键词 DISTINCT 用于返回唯一不同的值。
SELECT DISTINCT Company FROM Orders
可以与COUNT搭配使用
SELECT COUNT ( DISTINCT name) FROM table WHERE name LIKE '张%'
?AND
SELECT name FROM table WHERE id = "1" AND teacher = "a"
注意:AND字符两边的字段不能一样,否则查询就会查不到结果
栗子:当要查询学过课程编号为01和02的学生姓名
SELECT name FROM table WHERE c_id = "01" AND c_id = "01"
?SQL Aggregate 函数
?AVG() - 返回平均值
?COUNT() - 返回行数
?FIRST() - 返回第一个记录的值
?LAST() - 返回最后一个记录的值
?MAX() - 返回最大值
?MIN() - 返回最小值
?SUM() - 返回总和
?SQL Scalar 函数
?UCASE() - 将某个字段转换为大写
?LCASE() - 将某个字段转换为小写
?MID() - 从某个文本字段提取字符,MySql 中使用
?SubString(字段,1,end) - 从某个文本字段提取字符
?LEN() - 返回某个文本字段的长度
mysql数据库中用LENGTH()
SELECT LENGTH("string")
SELECT LENGTH(NAME) FROM items
注意:当字段为NULL时返回值为NULL