第三章:高级查询(-)
3.1:修改表
3.1.1:修改表
语法:
Alter table rename [ TO] ;
例子:Alter table `demo01` rename `demo02`;
3.1.2:添加字段
语法:
Alter Table 表名ADD字段名 数据类型[属性];
例子:Alter Table `Demo02` ADD `passWord` varchar(50) not null;
3.1.3:修改字段
语法:
Alter table 表名change原字段名 新字段名 数据类型[属性];
%修改字段名%
Alter Table `Demo02` change `name` `username` char(10) NOT NULL;
3.1.4 删除字段
删除字段是将数据表中的某个字段从表中移除:
语法: ALTER TABLE 表名DROP字段名;
3.1.5 添加主外键
添加主键约束
语法: ALTER TABLE 表名ADD CONSTRAINT主键名PRIMARY KEY表名(主键字段);
添加外键约束
语法: ALTER TABLE 表名ADD CONSTRAINT外键名FOREIGN KEY (外键字段) REFERENCES关 联表名(关联字段);
3.2 DML语句回顾
3.2.1 插入数据记录
插入单行数据
语法: INSERT INTO 表名[(字段名列表)] VALUES (值列表);
插入多行数据
语法:INSERT INTO 新表(字段名列表) VALUES (值列表1), (值列表2), ......, (值列表n);
注意:在是INSERT语句插入记录时,如果不包含字段名称,VALUES后值列表中各字段的顺序必须和表定义中各字段的顺序相同,如果表结构变了(如执行了添加数据操作)则值列表也要变化,否则会出现错误.如果指定了插入的字段名,就会避免这个问题,因此,建议在插入数据时指定具体字段名.
将查询结构插入到新表
语法1:
INSERT INTO 新表(字段1,字段2,......)
SELECT 字段1,字段2,......
FROM 原表;
语法2:
CREATE TABLE 新表(SELECT字段1,字段2, ........FROM原表);
3.2.2 更新数据记录
语法: UPDATE 表名SET字段1=值1,字段2=值2,........字段n=值n [WHERE条件];
3.2.3 删除数据记录
语法: DELETE FROM 表名[WHERE条件];
语法: TRUNCATE TABLE 表名;
3.3 数据查询
3.3.1 DQL语句回顾
SQL Server中数据查询语句:
语法: SELECT
FROM
[WHERE ]
[GROUP BY ]
[HAVING ]
[ORDER BY [ASC或DESC]];
3.3.2 LIMIT子句
语法: SELECT
FROM
[WHERE ]
[GROUP BY ]
[ORDER BY [ASC或DESC]]
[LIMIT [位置偏移量, ]行数];
其中:1.位置偏移量指从结果集中第几条数据开始显示(第一条记录的位置偏移量是0,第2条 是1,....),当省略时从第一条记录开始显示.
行数值显示记录的条数
3.3.3 常用函数
常用聚合函数:
AVG()
返回某字段的平均值
COUNT()
返回某字段的行数
MAX()
返回某字段的最大值
MIN( )
返回某字段的最小值
SUM( )
返回某字段的和
函数名
作用
常用的字符串函数
函数名
作用
举例
CONCAT(str1,str2,...,strn)
连接字符串str1,str2,...,strn为一个完整字符串
SELECT CONCAT(‘My’,’S’,’QL’);
返回:MySQL
INSERT(str,pos,len,newstr)
将字符串str从pos位置开始,len个字符长的子串替换为字符串newstr
SELECT INSERT(‘这是SQL SERVER数据库’,3,10,’MySQL’);
返回:这是MySQL数据库
LOWER(str)
将字符串str中所有字符变为小写
UPPER(str)
将字符串str中所有字符串变为大写
SELECT UPPER(‘MySQL’);
返回: MYSQL
SUBSTRING(str,num,len)
返回字符串str的第num个位置开始长度为len的子字符串
3.时间日期函数
函数名
作用
举例
CURDATE()
获取当前日期
SELECT CURDATE();
CURTIME()
获取当前时间
NOW()
获取当前日期和时间
WEEK(date)
返回日期date为一年的第几周
YEAR(date)
返回日期date的年份
HOUR(time)
返回时间Time的小时值
MINUTE(time)
返回时间Time的分钟值
DATEDIFF(date1,date2)
返回日期参数date1和date2之间相隔的天数
ADDDATE(date,n)
计算日期参数date加上n天后的日期
数字函数
函数名
作用
举例
CEIL(x)
返回大于或等于数值x的最小整数
SELECT CEIL(2.3)
返回:3
FLOOR(x)
返回小于或等于数值x的最大整数
RAND()
返回0~1间的随机数
3.4 子查询
3.4.1 简单子查询
语法:SELECT ...FROM 表1 WHERE字段1比较运算符(子查询);
使用AS关键字,符合ANSI标准
SELECT 字段列表FROM表名AS表的别名;
使用空格,简便的方法
SELECT 字段列表FROM表名 表的别名;
3.5 IN和NOT IN子查询
3.5.1 IN子查询
使用子查询 当返回结果有多条记录时,则把条件的=改为in
IN子查询后面可跟随返回多条记录的子查询,用于检测某字段的值是否存在于某个范围中.
3.5.2 NOT IN子查询
不在IN子查询范围内的其他数据.