SQL 是 Structured Query Language(结构化查询语言)的英文缩写,MySQL使用SQL语句存储和检索信息。
MySQL 支持SQL语句:
数据定义语句(DDL):用于改变数据库结构,包括创建、更改和删除数据库对象
用于操作表结构的DDL语句有:
create datebase
drop datebase
crease table
alter table
drop table
create index
drop index
数据操纵语句(DML)
DML用于检索和修改数据
select
insert
update
delete
事务控制语句(TCL)
事务是最小的工作单元,作为一个整体同时成功或失败,称为事务控制
用于事务控制的语句有:
start transaction– 开始事务处理
commit- 提交并结束事务处理
rollback- 撤销事务中已完成的工作
savepoint– 标记事务中可以回滚的点
数据控制语句(DCL)
常用命令总结
注意所有的文本命令必须以斜线开始,且以分号结束,不区分大小写
重复上一条命令的快捷键同matlab向上键,在执行前可进行修改
1 退出命令
成功地连接后,可以在mysql>提示下输入QUIT或exit; (或q)随时退出:mysql> quit
2 显示所有数据库命令
使用SHOW语句找出服务器上当前存在什么数据库:mysql> SHOW DATABASES;
+----------+
| Database |
+----------+
| Information_schema|
| mysql |
| test |
+----------+
3访问某数据库
如果test数据库存在,尝试访问它: mysql> USE test
Database changed
注意,USE,类似QUIT,不需要一个分号,USE语句在使用上也有另外一个特殊的地方:它必须在一个单行上给出。
4 创建自己的数据库create database name;
创建数据库:create database mydata; 是database不是databases
5 在数据库中进行操作 use chenyy(databasename),之后所用的所有操作都是工作在此数据库之下
6创建表格 create table dept。
一定要与use e name连用,以创建者此数据库之下。
mysql> create table dept %创建部门表,没有分号
-> ( %输入的是(,但是显示的是<
-> deptno int primary key, % department mumber 数据类型为int,是主键
-> dname varchar(14), % department name
-> loc varchar(13) %location 所在地
-> );
Query OK, 0 rows affected (0.31 sec) %表已经创建好,问题解决Query(问题)
创建数据表时开始和结尾要加括号,这里用的是小括号"()",不是"<>",虽然mysql命令行显示是<>。
注:主键
MYSQL 的 primary key 和unique key 的区别
Primary Key与Unique Key
Primary key 与Unique Key都是唯一性约束。但二者有很大的区别:
1、Primary key的1个或多个列必须为NOT NULL,如果列为NULL,在增加Primary key时,列自动更改为NOT NULL。而UNIQUE KEY 对列没有此要求。
2、一个表只能有一个PRIMARY KEY,但可以有多个UNIQUE KEY。
7 创建表emp:
create table emp %雇员表
create table emp
(
empno int primary key,
ename varchar(10),
job varchar(10),
mgr int,
hiredate datetime,
sal double,
comm double,
deptno int(3), %int可指定长度1-11之间
foreign key(deptno) references dept(deptno) %创建外键deptno引用主键dept的deptno字段
);引用其实就是相等
8创建create table salgrade
--工资级别表
create table salgrade
(
grade int(3) primary key,
losal int(3),
hisal int(3)
);
不同数据库之间的不同主要有:数据类型、分页程序。
用于管理MySQL的数据库和表的内容的软件为MySQL Administer
9查看所有数据库命令 show databases;
10查看所有表命令 show tables;
11 观察某个表的结构:desc dept; ( description department)
12.1查询 : 查询表中所有数据 : select * from table_name;
查询指定字段的数据 : select 字段1 , 字段2 from table_name;
例 : select id,username from mytable where id=1 order by desc;多表查询语句------------参照第17条
13 向表dept中插入数据命令
insert into dept values(deptno,“dname”,“loc”);与上表中的结构对应。
--往部门表中查数据
insert into dept values(10,'Accounting','New York');
insert into dept values(20,'Research','Dallas');
insert into dept values(30,'Sales','Chicago');
insert into dept values(40,'Operations','Boston');
insert into dept values(50,'Admin','Washing');
Commit 制定好之后提交,托付; 交付
14 删除命令
14.1数据库删除 : Drop database db_name; 删除时可先判断是否存在,写成 : drop database if exits db_name
14.2删表 : drop table table_name; 例 : drop table mytable;
14.3 删除整个表中的信息,不删除表 : delete from table_name;
删除表中指定条件的语句 : delete from table_name where 条件语句 ; 条件语句如 : 列名=列内容,注意对字符串要加‘’。
表 faults的内容如下:
不同数据库之间的不同主要有:自动递增字段。
17自动递增字段
mysql> Create table article -> (id int primary key auto_increment, %自动递增字段 title varchar(255));
Query OK, 0 rows affected (0.20 sec)
mysql> insert into article values(null,'a'); 将id设为空,title=a插入到表中
Query OK, 1 row affected (0.25 sec)
mysql> select * from article; 可以看到id自动编号为1
+----+-------+
| id | title |
+----+-------+
| 1 | a |
+----+-------+
1 row in set (0.00 sec)
mysql> insert into article values(null,'b'); 再将id设为空,title=b插入到表中
Query OK, 1 row affected (0.27 sec)
mysql> Select * from article;
+----+-------+
| id | title |
+----+-------+
| 1 | a |
| 2 | b |
+----+-------+
2 rows in set (0.00 sec)
或者insert into article (title)values (‘c’);%只在title上插值
Select * from article;
18 取当前日期 select now();
19 将日期转换成任意的字符串,并设置字符串的格式
Select date_format(now(),‘%y-%m-%d %h:%i: %s );注意使用i表示分钟,不是m
%W 星期名字(Sunday……Saturday)
%w 一个星期中的天数(0=Sunday ……6=Saturday )
%D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。)
%d 月份中的天数, 数字(00……31)
%Y 年, 数字, 4 位
%y 年, 数字, 2 位
%a 缩写的星期名字(Sun……Sat)
%e 月份中的天数, 数字(0……31)
%m 月, 数字(01……12)
%c 月, 数字(1……12)
%b 缩写的月份名字(Jan……Dec)
%j 一年中的天数(001……366)
%H 小时(00……23)
%k 小时(0……23)
%h 小时(01……12)
%I 小时(01……12)
%l 小时(1……12)
%i 分钟, 数字(00……59)
%r 时间,12 小时(hh:mm:ss [AP]M)
%T 时间,24 小时(hh:mm:ss)
%S 秒(00……59)
%s 秒(00……59)
%p AM或PM
%U 星期(0……52), 这里星期天是星期的第一天
%u 星期(0……52), 这里星期一是星期的第一天
%% 一个文字“%”。
20插入任意日期
向表emp中插入日期,插之前先看看它的结构。
Desc emp
21向表emp中插值时,应该注意外键、参考、主键等。
程序中deptno int(3), foreign key(deptno) references dept(deptno)
而insert into dept values(deptno,‘dname’,‘loc’);与上表中的结构对应。
表dept的结构
--往部门表中查数据
insert into dept values(10,'Accounting','New York');
insert into dept values(20,'Research','Dallas');
insert into dept values(30,'Sales','Chicago');
insert into dept values(40,'Operations','Boston');
insert into dept values(50,'Admin','Washing');
Commit 制定好之后提交,托付; 交付
所以在填写emp的deptno一项时应该引用dept的deptno。
Insert into emp values(1,‘chenyy’,‘market’,123,‘2010-09-01 11:11:11’,8000,80,10);