第一部分:mysql
一、安装
1、复制my-default.ini到my.ini,编辑my.ini文件
# These are commonly set, remove the # and set as required.
basedir = D:\SoftAnZhuang\mysql-5.6.21-winx64
datadir =D:\SoftAnZhuang\mysql-5.6.21-winx64\data
port = 3306
# server_id = .....
2、安装
管理员模式启动cmd,进入mysql的bin目录
mysqld install #回车运行
3、启动: net start mysql
4、连接
mysql -uroot -p
4、停止
net stop mysql
二、操作
一些重要的命令:
- select- 从数据库中提取数据
- update- 更新数据库中的数据
- delete- 从数据库中删除数据
- insert into- 向数据库中插入新数据
- create database- 创建新数据库
- alter database - 修改数据库
- create table - 创建新表
- alter table - 变更(改变)数据库表
- drop table - 删除表
- create index- 创建索引(搜索键)
- drop index - 删除索引
1、查看所有数据库
show databases;
2、使用某个数据库: use 数据库名
use report;
3、显示列中不重复的值,比如想显示出area这一列中的值,重复的只显示一次。
这时候要用到 distinct
例:select distinct area from people;
4、where: 用于过滤
WHERE 子句中的运算符
运算符 | 描述 |
---|---|
= | 等于 |
<> | 不等于。 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
BETWEEN | 在某个范围内 |
LIKE | 搜索某种模式 |
IN | 指定针对某个列的多个可能值 |
SQL 对大小写不敏感:SELECT 与 select 是相同的。
in的语法:
select id,age from people where age in (23,24);
like 的语法:
select name from people where name like "%i%";
between的语法:
select id,age from people where age between 20 and 23;
not between 1 and 2;
5、and 和or运算符
6、order by
ORDER BY 关键字用于对结果集按照一个列或者多个列进行排序。ORDER BY 关键字默认按照升序对记录进行排序。如果需要按照降序对记录进行排序,您可以使用 DESC 关键字。
语法:
SELECT column_name,column_name
FROM table_name
ORDER BY column_name,column_name ASC|DESC;
例:select name,age from people order by age desc;
7、insert into
向表里插入记录:
INSERT INTO table_name VALUES (value1,value2,value3,...);
INSERT INTO table_name (column1,column2,column3,...) VALUES (value1,value2,value3,...);
例:
insert into people(name,area) values("lin","english");
8、update
UPDATE table_name SET column1=value1 WHERE some_column=some_value;
9、delete
DELETE 语句用于删除表中的记录。
DELETE FROM table_name WHERE some_column=some_value;
可以在不删除表的情况下,删除表中所有的行。这意味着表结构、属性、索引将保持不变:
DELETE * FROM table_name ;
删除和更新的时候要注意where语句,不然操作的是表中全部的数据。
10 、limit
limit 子句用于规定要返回的记录的数目。limit子句对于拥有数千条记录的大型表来说,是非常有用的。
11、别名 as
SELECT column_name AS alias_name FROM table_name;
SELECT column_name(s) FROM table_name AS alias_name;
在下面的情况下,使用别名很有用:
- 在查询中涉及超过一个表
- 在查询中使用了函数
- 列名称很长或者可读性差
- 需要把两个列或者多个列结合在一起
12、join
SQL JOIN 子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段。
INNER JOIN:如果表中有至少一个匹配,则返回行
select a.*,b.* from people as a inner join scores as b on a.id =b.id;
LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行
select a.*,b.* from people as a left join scores as b on a.id =b.score;
RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行
select a.*,b.* from people as a right join scores as b on a.id =b.score;
FULL JOIN:只要其中一个表中存在匹配,则返回行
select a.*,b.* from people as a full join scores as b on a.id =b.id;
13、union
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。请注意,UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 SELECT 语句中的列的顺序必须相同。
SELECT column_name(s) FROM table1 UNION SELECT column_name(s) FROM table2;
SELECT column_name(s) FROM table1 UNION ALL SELECT column_name(s) FROM table2;
例:select name from people union select name from scores;
把两张表的name字段的值合并在一起了。
14、select into 复制旧表内容到新表
可以从一个表复制信息到另一个表。SELECT INTO 语句从一个表复制数据,然后把数据插入到另一个新表中。
CREATE TABLE 新表 SELECT * FROM 旧表
例:create table student select *from people;
15、 INSERT INTO SELECT复制表中数据,插入到另一张已经存在的表
INSERT INTO table2(column_name(s)) SELECT column_name(s) FROM table1;
insert into scores(name) select name from people;
16、 约束(Constraints)
在 SQL 中,我们有如下约束:
- not null - 指示某列不能存储 NULL 值。
- unique- 保证某列的每行必须有唯一的值。
- primary key- NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
- foreign key - 保证一个表中的数据匹配另一个表中的值的参照完整性。
- check - 保证列中的值符合指定的条件。
- default - 规定没有给列赋值时的默认值。
17、创建索引 :CREATE INDEX
CREATE INDEX 语句用于在表中创建索引。在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据。更新一个包含索引的表需要比更新一个没有索引的表花费更多的时间,这是由于索引本身也需要更新。因此,理想的做法是仅仅在常常被搜索的列(以及表)上面创建索引。
CREATE INDEX index_name ON table_name (column_name)
18、 drop
删除索引:DROP INDEX index_name ON table_name
删除表:DROP TABLE table_name
删除数据库:DROP DATABASE database_name
19、ALTER
ALTER TABLE 语句用于在已有的表中添加、删除或修改列。
表中添加列:ALTER TABLE table_name ADD column_name datatype
表中删除列:ALTER TABLE table_name DROP COLUMN column_name
改变表中列的数据类型:ALTER TABLE table_name ALTER COLUMN column_name datatype
20、自增长:AUTO INCREMENT
CREATE TABLE Persons
(
ID int NOT NULL AUTO_INCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (ID)
)
21、视图:Views
视图是基于 SQL 语句的结果集的可视化的表。
CREATE VIEW view_name AS SELECT column_name(s)FROM table_name WHERE condition
create view vs as select id,name from people ;
SELECT * FROM vs ;
更新视图:
CREATE OR REPLACE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition
撤销视图:
DROP VIEW view_name
22、null值
NULL 值代表遗漏的未知数据。
无法使用比较运算符来测试 NULL 值,比如 =、< 或 <>。我们必须使用 IS NULL 和 IS NOT NULL 操作符。
例:select *from people where age is null;
23、GROUP BY
GROUP BY 语句用于结合聚合函数,根据一个或多个列对结果集进行分组。
select name,sum(age) from people group by name;
14、导出数据
SELECT * FROM runoob_tbl -> INTO OUTFILE '/tmp/tutorials.txt';
mysqldump -u root -p database_name table_name > dump.txt
password *****
如果你需要将数据拷贝至其他的 MySQL 服务器上, 你可以在 mysqldump 命令中指定数据库名及数据表。
在源主机上执行命令,将数据备份至 dump.txt 文件中:
mysql -u root -p database_name < dump.txt
password *****
如果完整备份数据库,则无需使用特定的表名称。
如果你需要将备份的数据库导入到MySQL服务器中,可以使用命令,使用以下命令你需要确认数据库已经创建:
mysqldump -u root -p database_name \
| mysql -h other-host.com database_name
可以使用命令将导出的数据直接导入到远程的服务器上,但请确保两台服务器是相通的,是可以相互访问的
15、导入数据
从文件 dump.txt 中将数据导入到 mytbl 数据表中, 可以使用以下命令:
mysqlimport -u root -p --local database_name dump.txt password *****