MySQL入门

1.创建数据库
CREATE DATABASE basename;
USE basename;

2.创建用户
GRANT ALL PRIVILEGES ON database.object TO ‘username’@’hostname’ IDENTIFIED by ‘password’;

3.创建表
CREATE TABLE classics(
author VARCHAR(128),
title VARCHAR(128),
type VARCHAR(16),
year CHAR(4))ENGINE MyISAM;

创建了一个名为classics的表,里面包含了4列内容
要检查表是否已被创建可使用DESCRIBE classics;

4.数据类型
CHAR(n) 精确的n CHAR(5):”HELLO”使用5个字节 CHAR(57):”Goodbye”使用57个字节
VARCHAR(n) 达到n VARCHAR(7):”Morning”使用7个字节 VARCHAR(100):”night”使用5个字节
BINARY(n)
VARBINARY(n)
TINYTEXT(n)
TEXT(n)
MEDIUMTEXT(n)
LONGTEXT(n)
TINYBLOB(n)
BLOB(n)
MEDIUMBLOB(n)
LONGBLOB(n)
TINYINT
SMALLINT
MEDIUMINT
INT/INTEGER
BIGINT
FLOAT
DOUBLE/REAL
DATETIME
DATE
TIMESTAMP
TIME
YEAR

AUTO_INCREMENT 自增

删除列
ALTER TABLE classics DROP id;
从classics表中删除id列

5.添加数据
INSERT INTO classics(author,title,type,year) VALUES(‘Mark Twain’,’The Adventures of Tom Sawyer’,’Fiction’,’1876′);

6.重命名表
ALTER TABLE classics RENAME pre1900;

7.改变列中的数据类型
ALTER TABLE classics MODIFY year SMALLINT;

8.添加新列
ALTER TABLE classics ADD pages SMALLINT UNSIGNED;

9.重命名列
ALTER TABLE classics CHANGE type category VARCHAR(16);
用change需要明确指定数据类型

10.删除列
ALTER TABLE classics DROP pages;

11.删除表
DROP TABLE disposable;

12.添加索引
索引有INDEX、PRIMARY KEY、FULL TEXT等类型

INDEX类型的添加方法:
ALTER TABLE classics ADD INDEX(author(20));

也可以创建表时添加索引
CREATE TABLE classics(
author VARCHAR(128),
INDEX(author(20))ENGINE MyISAM;

13.添加主键
在创建表时
CREATE TABLE classics(
author VARCHAR(128),
isbn CHAR(13),
INDEX(author(20)),
PRIMARY KEY (isbn))ENGINE MyISAM;

或者将表中的列(如isbn列)填上不同的数值后用UPDATE更新
ALTER TABLE classics ADD isbn CHAR(13);
UPDATE classics SET isbn=’9781598184891′ WHERE year=’1876′;
ALTER TABLE classics ADD PRIMARY KEY(isbn);

14.FULL TEXT
FULLTEXT只能用于MyISAM表
FULLTEXT只能用于CHAR、VARCHAR和TEXT列
FULLTEXT的检索用MATCH…AGAINST
可以在创建表时用CREATE TABLE语句定义FULLTEXT索引
也可以之后用ALTER TABLE语句添加
ALTER TABLE classics ADD FULLTEXT(author,title);

15.MySQL数据库查询
SELECT
SELECT somthing FROM tablename;
SELECT author,title FROM classics;

SELECT COUNT(*) FROM tablename //显示行数
SELECT DISTINCT something FROM tablename //去除重复数据

DELETE
删除某一行,配合where和limit这样的限定词使用
DELETE FROM classics WHERE title=’Little Dorrit’;

WHERE
WHERE可以缩小检索范围
SELECT author,title FROM classics WHERE author=”Mark Twain”;
除了之前的确定内容,还可以与LIKE配合
SELECT author,title FROM classics WHERE title LIKE “%and%”; //删除包含and字符串的行

LIMIT
LIMIT可以一个参数,也可以两个参数
一个参数表示返回的行数
两个参数,第一个表示略过几行,第二个表示显示几行
SELECT author,title FROM classics LIMIT 3;
SELECT author,title FROM classics LIMIT 1,2;

MATCH…AGAINST
用在FULLTEXT索引中,可以用类似搜索引擎的方式检索索引

SELECT author,title FROM classics WHERE MATCH(author,title) AGAINST(‘and’);
因为and是“无用词”,所以mysql将忽略它并返回空集

SELECT author,title FROM classics WHERE MATCH(author,title) AGAINST(‘curiostity shop’);
将查找含有curiosity和shop的任意行

在布尔模式中使用match…against
在字符前添加+或-,表示”必须包含”或者”除去该字段”
SELECT author,title FROM classics WHERE MATCH(author,title) AGAINST(‘+curiostity -shop’ IN BOOLEAN MODE);

UPDATE…SET
使用update…set来更新数据
UPDATE classics SET author=’Mark Twain’ WHERE author=’Mark’;

ORDER BY
使用order by对显示结果进行排序
默认为升序,也可以显式指定为升序ASC
降序为DESC
SELECT author,title,year FROM classics ORDER BY author ASC,year DESC;

GROUP BY
分组数据检索
SELECT category,COUNT(author) FROM classics GROUP BY category;

16.连接表
如果有两个表
classics中有author,title,isbn列
customers中有name,isbn列
可以使用
SELECT name,author,title FROM customers,classics Where customers.isbn = classics.isbn;
将两张表的内容联系在一起显示

如果两个表有同名列(如上一个例子里的isbn),可以使用NATURAL JOIN自动合并
SELECT name,author,title FROM customers NATURAL JOIN classics;

JOIN…ON
SELECT name,author,title FROM customers JOIN classics ON customers.isbn=classics.isbn;

AS
用AS创建别名。在对同一表名多次引用的长段引用中特别有用
SELECT name,author,title FROM customers AS cust,classics AS class WHERE cust.isbn=class.isbn;

17.逻辑运算符
可以使用AND、OR、NOT
SELECT author,title FROM classics WHERE author LIKE “Charls%” AND author NOT LIKE “%Darwin”;

show engines //显示引擎信息

show create table TABLE_NAME //显示创建表时的信息

explain select * from TABLE_NAME //显示表的相关信息

Add a Comment

电子邮件地址不会被公开。 必填项已用*标注