Mysql 入门学习

来源:互联网 发布:日本老龄化数据 编辑:程序博客网 时间:2024/06/05 03:55

数据库基本操作

1.数据库

-  显示所有数据库 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.sql2) 导出一个表    mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名    mysqldump -u user_name -p database_name table_name > outfile_name.sql3) 导出一个数据库结构    mysqldump -u user_name -p -d –add-drop-table database_name > outfile_name.sql    -d 没有数据 –add-drop-table 在每个create语句之前增加一个drop table4) 带语言参数导出    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”来排序,即升序。

表的联查

  1. join 内连接
SELECT    d. NAME,    SUM(d.number) AS count,    d. CODE,    d.unitFROM    wdgj_inventory_in INJOIN wdgj_inventory_in_detail d ON IN .id = d.inventory_in_idAND IN .reason_in = 3
  1. 外连接left join / right join
SELECT    a.name,b.ageFROM    a LEFT OUTJOIN b ON a.id = b.uid

UNION合并结果集

使用UNION关键字,合并结果时,两个查询对应的列数和数据类型必须相同。    各个SELECT语句之间使用UNION或UNION ALL关键字分隔  UNION:执行的时候删除重复的记录,所有返回的行都是唯一的  UNION ALL:不删除重复行也不对结果进行自动排序
SELECT f.name ,f.price    FROM apple fWHERE f_price<9.0UNION SELECT p.name,p.priceFROM pear pWHERE p_id IN (101,103)
0 0