一、操作数据库
(1) 创建数据库
CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [, create_specification] ...]
create_specification:
[DEFAULT] CHARACTER SET charset_name | [DEFAULT] COLLATE collation_name
创建一个名称为mydb1的数据库。
create database mydb1;
创建一个使用gbk字符集的mydb2数据库。
create database mydb2 character set gbk;
创建一个使用utf8字符集,并带校对规则的mydb3数据库。
create database mydb3 character set utf-8 collate utf8_bin;
(2) 查看数据库
显示数据库语句:
SHOW DATABASES
显示数据库创建语句:
SHOW CREATE DATABASE db_name
查看当前数据库服务器中的所有数据库
show databases;
查看前面创建的mydb2数据库的定义信息
show create database mydb3;
(3)修改数据库
ALTER DATABASE [IF NOT EXISTS] db_name [alter_specification [, alter_specification] ...]
alter_specification:
[DEFAULT] CHARACTER SET charset_name | [DEFAULT] COLLATE collation_name
查看服务器中的数据库,并把其中mydb2字符集修改为utf8
alter database mydb2 character set utf8;
(4)删除数据库
DROP DATABASE [IF EXISTS] db_name
删除前面创建的mydb1数据库 drop database mydb1;
drop database mydb1;
(5)选择数据库
进入数据库:use db_name;
查看当前所选的数据库: select database();
二、操作表
(1)创建表
CREATE TABLE table_name
(
field1 datatype,
field2 datatype,
field3 datatype,
)[character set 字符集] [collate 校对规则]
field:指定列名 datatype:指定列类型
创建一个员工表employee
create table employee(
id int primary key auto_increment,
name varchar(20) unique,
gender bit not null,
birthday date,
entry_date date,
job varchar(40),
salary double,
resume text
);
(2)查看表
查看表结构:desc tabName
查看当前数据库中所有表:show tables
查看当前数据库表建表语句 show create table tabName;
查看表的相关信息:SHOW TABLE STATUS
显示employee表的信息
show table status like 'employee' \G;
(3)修改表
ALTER TABLE table ADD/MODIFY/DROP/CHARACTER SET/CHANGE (column datatype [DEFAULT expr][, column datatype]...);
*修改表的名称:rename table 表名 to 新表名;
在上面员工表的基本上增加一个image列。
alter table employee add image blob;
修改job列,使其长度为60。
alter table employee modify job varchar(60);
删除gender列。
alter table employee drop gender;
表名改为user。
rename table employee to user;
修改表的字符集为gbk
alter table user character set gbk;
列名name修改为username
alter table user change name username varchar(20);
(4)删除表
DROP TABLE tab_name;
删除user表
drop table user;
三、操作表记录CRUD
(1) INSERT
INSERT INTO table [(column [, column...])] VALUES (value [, value...]);
插入的数据应与字段的数据类型相同。
数据的大小应在列的规定范围内,例如:不能将一个长度为80的字符串加入到长度为40的列中。
在values中列出的数据位置必须与被加入的列的排列位置相对应。
字符和日期型数据应包含在单引号中。
插入空值:不指定或insert into table value(null)
如果要插入所有字段可以省写列列表,直接按表中字段顺序写值列表
(2) UPDATE
UPDATE tbl_name SET col_name1=expr1 [, col_name2=expr2 ...] [WHERE where_definition]
UPDATE语法可以用新值更新原有表行中的各列。
SET子句指示要修改哪些列和要给予哪些值。
WHERE子句指定应更新哪些行。如没有WHERE子句,则更新所有的行
(3) DELETE
如果不使用where子句,将删除表中所有数据。
Delete语句不能删除某一列的值(可使用update)
使用delete语句仅删除记录,不删除表本身。如要删除表,使用drop table语句。
同insert和update一样,从一个表中删除记录将引起其它表的参照完整性问题,在修改数据库数据时,头脑中应该始终不要忘记这个潜在的问题。
外键约束
删除表中数据也可使用TRUNCATE TABLE 语句,它和delete有所不同,参看mysql文档。
(4)SELECT
1.基本查询
SELECT [DISTINCT] *|{column1, column2. column3..} FROM table;
查询表中所有学生的信息。
select * from exam;
查询表中所有学生的姓名和对应的英语成绩。
select name,english from exam;
过滤表中重复数据
select distinct english from exam;
在所有学生分数上加10分特长分显示。
select name , math+10,english+10,chinese+10 from exam
2.使用where子句进行过滤查询
查询姓名为张飞的学生成绩
select * from exam where name='张飞';
查询英语成绩大于90分的同学
select * from exam where english > 90;
查询总分大于230分的所有同学
select name 姓名,math+english+chinese 总分 from exam where math+english+chinese>230;
查询英语分数在 80-100之间的同学。
select * from exam where english between 80 and 100;
3.使用order by关键字对查询结果进行排序操作
SELECT column1, column2. column3.. FROM table where... order by column asc|desc;
asc 升序 -- 默认就是升序 desc 降序
对语文成绩排序后输出。
select name,chinese from exam order by chinese desc;
对总分排序按从高到低的顺序输出
select name 姓名,chinese+math+english 总成绩 from exam order by 总成绩 desc;