MySQL实用教程
@
1 查看所有的数据库
show databases;
我电脑里面的结果
2 选择一个数据库
use 数据库名
例如
use mysql;
3 展示所有的表(在一个数据库中)
在上一步中,我们已经选择了数据库 mysql
这一步是在第二部的基础上进行的
show tables;
结果
4 显示一个具体的表的内容
这题还是在第二题的基础上
我们已经选择了mysql数据库
show COLUMNS from 表名
例如
show COLUMNS from help_topic;
结果如下
show COLUMNS from 表名 == DESCRIBE help_topic
结果还是相同
想要知道更多的show命令
请使用
help show
5 如何创建一个表
① 一个最基本的例子
先选择数据库 class
use class;
然后再创建一个表
create table customers(
cust_id int ,
cust_name char(50)
)
create table 表名 ()
( )里面就是一个列名+ 它的类型
前面的所有列都要加 " ,"
只有最后一个列可以不用加
② NULL值
如果一个列使用了NULL值 ,那么这个列在插入和更新的时候,就可以不给出值
如果使用了NOT NULL 那么在插入和更新的时候,就必须要给出值.
举个例子
create table orders(
order_num int NOT NULL ,
order_data datetime NOT NULL,
cust_id int NOT NULL
)
create table vendors(
vend_id int NOTNULL,
vend_name char(50) NOT NULL,
vend_address char(50) NULL,
vend_city char(50) NULL,
vend_state char(5) NULL,
vend_zip char(10) NULL,
vend_country char(50) NULL
)
如果不指明的话,默认为NULL
④ 主键
主键的定义:一列(一组列),其值能够唯一区分表中的每个行.
create table vendors(
vend_id int NOTNULL,
vend_name char(50) NOT NULL,
vend_address char(50) NULL,
vend_city char(50) NULL,
vend_state char(5) NULL,
vend_zip char(10) NULL,
vend_country char(50) NULL,
PRIMARY KEY (vend_id)
)
设置vend_id为主键.
主键还可以使用多个列,联合起来当主键.
例如
create table orders(
order_num int NOT NULL ,
order_item int NOT NULL,
prod_id char(10) NOT NULL,
quantity int NOT NULL,
item_price decimal(8,2) NOT NULL,
PRIMARY KEY (order_num,order_item)
)
这种情况下,order_num和item都不能为空.
⑤ AUTO_INCREMENT
AUTO_INCREMENT 就是自动增加的
比如原来的有一个 id 为5 你插入一个,那个值就成了6
举个例子
原来的值.
INSERT INTO orders (order_item,prod_id,quantity,item_price)
VALUES(2,17851234,75,10.5)
后来的值
注意:
INSERT INTO orders (order_num,order_item,prod_id,quantity,item_price)
VALUES(10,2,17851234,75,10.5)
在插入的时候,在插入到一个10
然后
我们在不带上,默认的order_num应该是 最近的一个后面的值.
再设置一下
INSERT INTO orders (order_item,prod_id,quantity,item_price)
VALUES(2,17851234,75,10.5)
结果如下:
⑥ 使用默认值
create table customers(
cust_id int ,
cust_name char(50) DEFAULT "张三"
)
然后再插入一个值
INSERT INTO customers(cust_id)
VALUES (1);
结果
⑦ 更新表
ALTER TABLE customers
ADD cust_sex char(5);
就是为表 customers加一个列
⑧ 删除和重命名表
删除
DROP TABLE 表名
DROP TABLE customers
重命名
RENAME TABLE 原表名 TO 新表名
RENAME TABLE orders TO NewName;
6 插入数据
① 数据插入
我们要用一张表
CREATE TABLE customer(
cust_id INT PRIMARY KEY,
cust_name CHAR(50),
cust_address CHAR(50),
cust_city CHAR(50),
cust_state CHAR(50),
cust_zip CHAR(50),
cust_country CHAR(50),
cust_contact CHAR(50),
cust_email CHAR(50)
)
然后我们插入一些数据
② 插入完整的行
例子如下:
INSERT INTO customer
VALUES
(17851075,'李相赫','召唤师峡谷','韩国','首尔','99999','韩国','不死的魔王','666@gmail.com');
③ 插入行的一部分
INSERT INTO customer(cust_id,cust_name,cust_address,cust_city,
cust_state ,cust_zip ,cust_country ,cust_contact)
VALUES
(17851234,'Faker','召唤师峡谷','韩国','首尔','99999','韩国','不死的魔王');
④ 插入多个行
INSERT INTO customer(cust_id,cust_name,cust_address,cust_city,
cust_state ,cust_zip ,cust_country ,cust_contact)
VALUES
(17850001,'Faker','召唤师峡谷','韩国','首尔','99999','韩国','不死的魔王'),
(17850002,'李相赫','召唤师峡谷','韩国','首尔','99999','韩国','不死的魔王');
⑤ 插入检索出的数据
顾名思意,就是把我们找出来的东西,插入进去.
我们先建立一个和原来的custmer一摸一样的表(表名不一样)
CREATE TABLE custnew(
cust_id INT PRIMARY KEY,
cust_name CHAR(50),
cust_address CHAR(50),
cust_city CHAR(50),
cust_state CHAR(50),
cust_zip CHAR(50),
cust_country CHAR(50),
cust_contact CHAR(50),
cust_email CHAR(50)
)
然后再custNew里面插入点数据.
然后清空custmer里面的数据
然后
INSERT INTO customer(cust_id,cust_name,cust_address,cust_city,
cust_state ,cust_zip ,cust_country ,cust_contact)
SELECT cust_id,cust_name,cust_address,cust_city,
cust_state ,cust_zip ,cust_country ,cust_contact
FROM custnew;
就OK拉
7 更新和删除数据
① 更新表中特定的行
举两个例子
现在customer表中的数据是这样的.
然后我们想为Faker添加一个电子邮件
我们需要
UPDATE customer
SET cust_email ='the_god@qq.com'
WHERE cust_name ='Faker';
更新多个行
UPDATE customer
SET cust_email ='the_god@163.com',
cust_contact='唯一真神'
WHERE cust_name ='Faker';
② 更新表中所有的行
就是不使用WHERE
这里就不做演示了
③ 删除数据
举个例子
DELETE FROM customer
WHERE cust_name ='Faker';
在表里的结果
④ PS要注意的地方
一定要加WHERE 语句
不然就是全局的更新和删除
而且MySQL里面是没有撤销按钮的.
如果是清空数据.
MySQL有一个命令.
TRUNCATE TABLE customer;