您的位置:首页 > 数据库 > MySQL

Mysql 入门学习

2016-01-13 15:43 495 查看

数据库基本操作

1.数据库

<
cf38
code>-  显示所有数据库 show databases;
-  创建数据库 create database <数据库名dname>
-  创建数据库并分配用户:


GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER ON 数据库名.* TO 数据库名@localhost IDENTIFIED BY '密码';
SET PASSWORD FOR '数据库名'@'localhost' = OLD_PASSWORD('密码');引用块内容


-  选中数据库  use <dname>
-  删除数据库  drop database <dname>  / drop database if exist <dname>
-  显示当前连接  select database();


2.数据表

- 创建表  create table命令格式:create table <表名> (<字段名1> <类型1> [,..<字段名n> <类型n>]);


mysql> create table MyClass(
> id int(4) not null primary key auto_increment,
> name char(20) not null,
> sex int(4) not null default '0',
> degree double(16,2));


- 显示表结构 desc <tname>  /  show clumns from <tname>
- 修改表


mysql> alter table MyClass add passtest int(4) default '0';

1) 加索引
mysql> alter table 表名 add index 索引名 (字段名1[,字段名2 …]);
mysql> alter table employee add index emp_name (name);

2) 加主关键字的索引
mysql> alter table 表名 add primary key (字段名);
mysql> alter table employee add primary key(id);

3) 加唯一限制条件的索引
mysql> alter table 表名 add unique 索引名 (字段名);
mysql> alter table employee add unique emp_name2(cardnumber);

4) 删除某个索引
mysql> alter table 表名 drop index 索引名;
mysql>alter table employee drop index emp_name;

5) 增加字段
mysql> ALTER TABLE table_name ADD field_name field_type;

6) 修改原字段名称及类型
mysql> ALTER TABLE table_name CHANGE old_field_name new_field_name field_type;

7) 删除字段
MySQL ALTER TABLE table_name DROP field_name;


- 插入表数据  insert into MyClass values(1,'Tom',96.45),(2,'Joan',82.99), (2,'Wang', 96.59);
- 更新表数据  update MyClass set name='Mary' where id=1;
- 删除表数据  delete from MyClass where id=1;


3.备份数据库

mysqldump命令用来备份数据库。(mysqldump 要在系统命令下执行)
1) 导出整个数据库(导出文件默认是存在mysql\bin目录下)
mysqldump -u 用户名 -p 数据库名 > 导出的文件名
mysqldump -u user_name -p123456 database_name > outfile_name.sql

2) 导出一个表
mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名
mysqldump -u user_name -p database_name table_name > outfile_name.sql

3) 导出一个数据库结构
mysqldump -u user_name -p -d –add-drop-table database_name > outfile_name.sql
-d 没有数据 –add-drop-table 在每个create语句之前增加一个drop table

4) 带语言参数导出
mysqldump -uroot -p –default-character-set=latin1 –set-charset=gbk –skip-opt database_name > outfile_name.sql




4.关于查询

下面是关于mysql基础查询的一般语法,正常的查询都可以通过以下的SQL完成。
mysql中不区分大小写,但查询关键字建议使用大写(查询优化)。


select 属性列表
from 表名和视图列表
[where 条件表达式]
[group by 属性名[having 条件表达式]]
[order by 属性名[asc|desc]]
[limit <offset>,row count]


说明:

where子句:按照“条件表达式”指定的条件进行查询。
group by子句:按照“属性名”指定的字段进行分组。
having子句:有group by才能having子句,只有满足“条件表达式”中指定的条件的才能够输出。
group by子句通常和count()、sum()等聚合函数一起使用。
order by子句:按照“属性名”指定的字段进行排序。排序方式由“asc”和“desc”两个参数指出,默认是按照“asc”来排序,即升序。


表的联查

join 内连接

SELECT
d. NAME,
SUM(d.number) AS count,
d. CODE,
d.unit
FROM
wdgj_inventory_in IN
JOIN wdgj_inventory_in_detail d ON IN .id = d.inventory_in_id
AND IN .reason_in = 3


外连接left join / right join

SELECT
a.name,b.age
FROM
a LEFT OUT
JOIN b ON a.id = b.uid


UNION合并结果集

使用UNION关键字,合并结果时,两个查询对应的列数和数据类型必须相同。
各个SELECT语句之间使用UNION或UNION ALL关键字分隔
UNION:执行的时候删除重复的记录,所有返回的行都是唯一的
UNION ALL:不删除重复行也不对结果进行自动排序


SELECT f.name ,f.price
FROM apple f
WHERE f_price<9.0
UNION
SELECT p.name,p.price
FROM pear p
WHERE p_id IN (101,103)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据库 mysql