SQL语言中的基本操作(2)

4,修改表
1) 修改表名: rename table 旧表名 to 新表名;
2) 增加列 语法: alter table 表名 add 列名 类型(长度) 约束;
3) 修改现有列类型、长度和约束:语法:alter table 表名 modify 列名 类型(长度) 约束;
4) 修改现有列名称:语法:alter table 表名 change 旧列名 新列名 类型(长度) 约束;
5) 删除现有列:语法:alter table 表名 drop 列名 ;

5,数据库CRUD语句
(1)Insert语句:使用 INSERT 语句向表中插入数据,语法如下:
INSERT INTO table [(column [, column…])]
VALUES (value [, value…]);
其中需要注意的有:插入的数据应与字段的数据类型相同;
数据的大小应在列的规定范围内,例如:不能将一个长度为60的字 符串加入到长度为30的列中。
在values中列出的数据位置必须与被加入的列的排列位置相对应。
字符和日期型数据应包含在单引号中。
插入空值:不指定或insert into table values (null)

例如:插入一条中文记录
insert into employee(id,name,job,salary) values(1,’小明’,’医生’,1500);
出错了:
ERROR 1366 (HY000): Incorrect string value: ‘\xC3\xF7’ for column ‘name’ at row 1 ;
错误原因:mysql client 采用默认字符集编码 gbk
此时,查看系统所有字符集:show variables like ‘character%’;
解决办法:修改客户端字符集为gbk
第一种:当前窗口临时修改 set names gbk ;只对当前窗口有效,关闭后就会失效
第二种:配置mysql/my.ini 文件
[mysql] 客户端配置:修改客户端字符集 [mysql] 后字符集 default-character-set=gbk
[mysqld] 服务器端配置

MySQL中共有6个地方字符集 :client connetion result是和客户端相关 、database server system是和服务器端相关:
client是客户端使用的字符集。
connection是连接数据库的字符集设置类型,如果程序没有指明连接数据库使用的字符集类型就按照服务器端默认的字符集设置。
database是数据库服务器中某个库使用的字符集设定,如果建库时没有指明,将使用服务器安装时指定的字符集设置。
results是数据库给客户端返回时使用的字符集设定,如果没有指明,使用服务器默认的字符集。
server是服务器安装时指定的默认字符集设定。
system是数据库系统使用的字符集设定(utf-8不可修改)

(2)Update语句:使用 update语句修改表中数据。语法如下:
UPDATE tbl_name
SET col_name1=expr1 [, col_name2=expr2 …]
[WHERE where_definition]
注意点:
UPDATE语法可以用新值更新原有表行中的各列。
SET子句指示要修改哪些列和要给予哪些值。
WHERE子句指定应更新哪些行。如没有WHERE子句,则更新所有的行。

(3)Delete语句:使用 delete语句删除表中数据,语法如下:
delete from tbl_name
[WHERE where_definition]
注意点:
如果不使用where子句,将删除表中所有数据。
Delete语句不能删除某一列的值(可使用update)
使用delete语句仅删除记录,不删除表本身。如要删除表,使用drop table语句。

(4)Select语句:基本语法如下:
SELECT [DISTINCT] *|{column1, column2. column3..}
FROM table;

其中:
select 指定查询哪些列的数据。
column指定列名。
*号代表查询所有列。
from指定查询哪张表。
DISTINCT可选,指显示结果时,是否剔除重复数据
注意点:
(1)在select语句中可使用表达式对查询的列进行运算
SELECT *|{column1|expression, column2|expression,..}
FROM table;
(2)在select语句中可使用as语句
SELECT column as 别名 from 表名;
(3)使用where子句,进行过滤查询
在where子句中经常使用的运算符:

这里写图片描述


Like语句中,% 代表零个或多个任意字符,_ 代表一个字符。
举一些小例子:
查询英语分数在 90-100之间的同学:select * from exam where english>=90 and english <= 100; 或者:select * from exam where english between 90 and 100;
查询数学分数为65,75,85的同学:select * from exam where math in(65,75,85);
查询所有姓赵的学生成绩:select * from exam where name like ‘赵%’;
查询英语分>80,语文分>80的同学:select * from exam where english > 80 and chinese > 80;
查询语文没有成绩学生:select * from exam where chinese is null;
查询语文有成绩学生:select * from exam where chinese is not null;
(4)使用order by 子句排序查询结果。
SELECT column1, column2. column3..
FROM table;
order by column asc|desc
其中:
Order by 指定排序的列,排序的列即既可以是表中的列名,也可以是select 语句后指定的列名;
Asc 升序、Desc 降序;
ORDER BY 子句应位于SELECT语句的结尾。
(5)聚集函数-count:Count(列名)返回某一列,行的总数
Select count(*)|count(列名) from tablename
[WHERE where_definition]

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/78c183f79745af915b9134f300f0ddd4.html