MySQL 支持数值、日期时间和字符串三种类型。
具体的类型说明能够参考菜鸟教程的总结mysql
CREATE TABLE table_name ( prod_id CHAR(10) NOT NULL, vend_id CHAR(10) NOT NULL, prod_name CHAR(254) NOT NULL, prod_price DECIMAL(8,2) NOT NULL DEFAULT 0.00, prod_desc TEXT(1000) NULL );
语句解释sql
类型包括数值、字符和日期类型;
NULL / NOT NULL
表示是否容许该列缺值;若是不指定NOT NULL 则默认 NULL;DEFAULT
指明默认值。安全
CREATE TABLE tableName( id INT PRIMARY KEY ); -- OR CREATE TABLE tableName( id INT, PRIMARY KEY (id) );
建完表以后,增长主键学习
ALTER TABLE tableName ADD PRIMARY KEY(id)
INSERT INTO table_name VALUES(xxxxx);
语句解释: 向表中插入数据,数据在VALUES 子句中给出;VALUES 按照建立表的列的顺序填写(这样会不安全);.net
INSERT INTO Customers(cust_id, cust_name, cust_address, cust_city, cust_state, cust_zip, cust_country, cust_contact, cust_email) VALUES('1000000006', 'Toy Land', '123 Any Street', 'New York', 'NY', '11111', 'USA', NULL, NULL);
没有指明的列是空的(要求没指出的列容许空或者有默认值);code
DROP TABBLE table_name;
语句解释, DROP 永久删除表,没有确认也不能撤销;htm
当你再也不须要该表时, 用 drop;当你仍要保留该表,但要删除全部记录时, 用 truncate;当你要删除部分记录时(always with a WHERE clause), 用 delete。blog
DELETE 删除行 DROP 删除表 TRUNCATE 保留表,删除数据
ALTER TABLE
-- 将test字段改成test1 -- ALTER TABLE 表名 CHANGE 原字段名 新字段名 字段类型 约束条件 ALTER TABLE user10 CHANGE test test1 CHAR(32) NOT NULL DEFAULT '123';
--修改列类型 ALTER TABLE tableName ALTER COLUMN columnName VARCHAR(4000) --修改数据 update 表名 set 列名='须要修改的值' where 列名='原来的值'
DELETE FROM 表名称 WHERE 列名称 = 值
ALTER TABLE Vendors DROP COLUMN vend_phone;
ALTER TABLE Vendors ADD vend_phone CHAR(20);
INSERT INTO tablename [(columns, ...)] VALUES(values, ...)
ALTER TABLE test RENAME test1
+---------+------------+ | student | class | +---------+------------+ | A | Math | | B | English | | C | Math | | D | Biology | | E | Math | | F | Computer | | G | Math | | H | Math | | I | Math | | A | Math | +---------+------------+
编写一个 SQL 查询,列出全部超过或等于5名学生的课。
Note:
学生在每一个课中不该被重复计算。教程
解答:
CREATE TABLE courses( student VARCHAR(64) NOT NULL, class VARCHAR(20) ); INSERT INTO courses VALUES('A','Math'); INSERT INTO courses VALUES('B','English'); INSERT INTO courses VALUES('C','Math'); INSERT INTO courses VALUES('D','Biology'); INSERT INTO courses VALUES('E','Math'); INSERT INTO courses VALUES('F','Computer'); INSERT INTO courses VALUES('G','Math'); INSERT INTO courses VALUES('H','Math'); INSERT INTO courses VALUES('I','Math'); INSERT INTO courses VALUES('A','Math'); SELECT class FROM courses GROUP BY class HAVING COUNT(DISTINCT student)>=5
| id | name | sex | salary | |----|------|-----|--------| | 1 | A | m | 2500 | | 2 | B | f | 1500 | | 3 | C | m | 5500 | | 4 | D | f | 500 |
交换全部的 f 和 m 值(例如,将全部 f 值更改成 m,反之亦然)。要求使用一个更新查询,而且没有中间临时表。
运行你所编写的查询语句以后,将会获得如下表:
| id | name | sex | salary | |----|------|-----|--------| | 1 | A | f | 2500 | | 2 | B | m | 1500 | | 3 | C | f | 5500 | | 4 | D | m | 500 |
CREATE TABLE salary( id INT NOT NULL PRIMARY KEY, name VARCHAR(20) NOT NULL, sex CHAR NOT NULL, salary int ); INSERT INTO salary VALUES(1,'A','m',2500); INSERT INTO salary VALUES(2,'B','f',5500); INSERT INTO salary VALUES(3,'C','m',5000); INSERT INTO salary VALUES(4,'D','f',1500); INSERT INTO salary VALUES(5,'E','f',2000); UPDATE salary SET sex = CASE WHEN sex='f' THEN 'm' WHEN sex='m' THEN 'f' ELSE sex END; SELECT * FROM salary;
参考了如下博客