码迷,mamicode.com
首页 > 数据库 > 详细

mysql笔记

时间:2017-08-31 11:10:07      阅读:278      评论:0      收藏:0      [点我收藏+]

标签:mysql

DBD:database deleveper

DBA:database administrator

SQL:结构化查询语言(structured query language)

作用:结构化查询语言是一种数据库查询和程序设计语言,用于存取数据以及查询,更新和管理关系数据库库系统 

SQL是1986年10月由美国国家标准局(ANSI)通过的数据库语言标准。

1992年11月又公布了SQL92标准,把数据库分为三个级别:基本集、标准集和完全集。

常见的sql语句

select 查询

insert 插入

delete 删除

update 更新

数据库是一个有组织、根据具体标准分类的数据集合

查看数据库服务器有多少个数据库

show databases ;

SHOW DATABASES ;

也能得到一样的结果,讲师推荐用大写

mysql 数据库指令不区分大小写

show databases \G

*************************** 1. row ***************************

Database: information_schema

*************************** 2. row ***************************

Database: mysql

*************************** 3. row ***************************

Database: performance_schema

*************************** 4. row ***************************

Database: wordpress

4 rows in set (0.00 sec)

\G即不用输入分号,会把数据一行一行的显示出来 

也可以不登陆直接在linux命令行查询数据库

# mysql -e ‘show databases \G‘ -u root -p

默认的数据的作用:

information_schema 这个数据库保存了mysql服务器所有数据的信息

元数据:

mysql 库:也是系统库,保存了账号密码信息

帮助: help +命令名

创建数据  create database 

公建数据库的注意事项:数据库的名字会以目录的方式存在,数据名字必须和linux创建linux目录要求一致。

不能超过64字符

show warning ; 查看警告

使用某个数据库

use aa  使用aa进行操作

select database() ; 查看当前操作的数据库是那个数据库

show tables ; 查询数据库中有多少个表

use 数据库名 -A 关闭预读取数据库功能

删除数据库 drop database aa 删除数据库aa 删除数据aa后,对应的aa的目录也是就存在了

if exists 子名来避免删除数据的过程中报错

drop database if exists abc ;

是否存在数据库abc,如果存大就删除,如果不存在就不做操作。

删除数据库方法二,直接将数据库的目录移动到备份目录

create database if no exists bb ;

查看是否存在数据库bb如果不存在就创建

二、表的操作

    show tables ;

查看有多少个表

创建表

create table 表名(字段名 类型,字段名 类型);

descripition 表名 查看表的结构

show create table hreo \G

*************************** 1. row ***************************

       Table: hreo

Create Table: CREATE TABLE `hreo` (

  `id` int(20) DEFAULT NULL,

  `name` char(40) DEFAULT NULL,

  `leveal` int(2) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=latin1

1 row in set (0.00 sec)


ENGINE=InnoDB DEFAULT CHARSET=latin1


CHARSET=latin1

默认向下兼容ASCLL码


Create Table: CREATE TABLE `hreo1` (

  `id` int(20) DEFAULT NULL,

  `name` char(40) DEFAULT NULL,

  `leveal` int(2) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=UTF8


CREATE TABLE 命令的TYPE子句是

可选的,同时innodb表类型

create table hreo(id int(20),name char(40),leveal int(2));

drop table hero ;

插入数据 

insert into hero values(1,‘mk‘,6); 这样就插入了一条记录

id 1 name 是hero 等级为6 mk 这里一定要加引号

insert into hero values(2,"dk",10),(3,"dh",98) ; 这样就插入了两条记录

insert into hero (id,name) values(1,‘mk‘); 这样就只给前两个字段插入了数据 

插入的值和字段,字段类型要一一对应

查询

select * from 表名

select * from hero ;

   

+------+------+-------+

| id   | name | level |

+------+------+-------+

|    1 | mk   |     6 |

|    2 | dk   |    10 |

|    3 | dh   |    98 |

|    3 | fm   |  NULL |

+------+------+-------+

select * from hero \G

*************************** 1. row ***************************

   id: 1

 name: mk

level: 6

*************************** 2. row ***************************

   id: 2

 name: dk

level: 10

*************************** 3. row ***************************

   id: 3

 name: dh

level: 98

*************************** 4. row ***************************

   id: 3

 name: fm

level: NULL

4 rows in set (0.00 sec)

\G 以行的方式来查看

如果只查id字段

select id from hero ;


use mysql

select id ,name from bb.hero ;

use bbReading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A


alter table 表名 rename 新表名;


修改表字段的类型

     alter table hero modify id int(10);

     由int(20) 变为 int(10)

alter table hero change name heroname char(20);

 将name 字段改变为heroname 且定义为字符型20位长

 alter table 表名 change 原字段名 新字段名 字段类型;

 添加字段

 例:使用alter 字段添加字段team 

 alter table hero add team enum("B","D");

 在某个字段前面添加某个字段

 alter table hero add teamid int(2) first ;

 insert into hero (teamid,id,heroname) values(1,123,"demohunter");

删除定做

alter hero drop 

alter table hero drop teamidd

alter table 表名 drop 字段名


select * from hero

    -> ;

ERROR 1046 (3D000): No database selected

MariaDB [(none)]> select * from hero ;

ERROR 1046 (3D000): No database selected

MariaDB [(none)]> select * from bb.hero ;

+--------+------+------------+-------+------+

| teamid | id   | heroname   | level | team |

+--------+------+------------+-------+------+

|   NULL |    1 | mk         |     6 | NULL |

|   NULL |    2 | dk         |    10 | NULL |

|   NULL |    3 | dh         |    98 | NULL |

|   NULL |    3 | fm         |  NULL | NULL |

|      1 |  123 | demohunter |  NULL | NULL |

+--------+------+------------+-------+------+

delete from hero where id =3;

就会把dk 和fm 删除

select * from hero ;

 select * from hero ;

+--------+------+------------+-------+------+

| teamid | id   | heroname   | level | team |

+--------+------+------------+-------+------+

|   NULL |    1 | mk         |     6 | NULL |

|   NULL |    2 | dk         |    10 | NULL |

|      1 |  123 | demohunter |  NULL | NULL |

+--------+------+------------+-------+------+

3 rows in set (0.00 sec)


删除teamid为空值的行

delete from hero where teamid is null ;

select * from hero ;

+--------+------+------------+-------+------+

| teamid | id   | heroname   | level | team |

+--------+------+------------+-------+------+

|      1 |  123 | demohunter |  NULL | NULL |

+--------+------+------------+-------+------+

空值不能写等号

更新一些值

update hero set teamid=3 ; 就会将表中的teamid改成3

update hero set teamid=1 where id=123 ;

会改id=123 的teamid改成1

where 条件

SQL查询语句:



select heroname,team from hero ;

+------------+------+

| heroname   | team |

+------------+------+

| demohunter | NULL |

+------------+------+

1 row in set (0.00 sec)


这样就只显示两个字段。

使用insert into 命令添加一些字记录进来

elect * from hero ;

+--------+------+-------------+-------+------+

| teamid | id   | heroname    | level | team |

+--------+------+-------------+-------+------+

|      1 |  123 | demohunter  |  NULL | NULL |

|      2 |  124 | blademaster |    10 | B    |

|      3 |  125 | deadknight  |    10 | D    |

|      4 |  126 | faseer      |    10 | B    |

|      4 |  126 | faseer      |    10 | B    |

+--------+------+-------------+-------+------+


有一第重复的记录126 faseer 

去掉重复的记录

select distinct heroname,team from hero ;

+-------------+------+

| heroname    | team |

+-------------+------+

| demohunter  | NULL |

| blademaster | B    |

| deadknight  | D    |

| faseer      | B    |

+-------------+------+

4 rows in set (0.00 sec)

这样就会去掉重复的记录

这个只是

or和and 同时存在时,先算and两边值,逻辑与先执行

 select * from hero where teamid=3 ;

select teamid,heroname from hero where teamid=3 or id>100;

mysql 默认查询不区分大小写,如何区分大小写

insert into hero values(7,99,"FARSEER",10,"D");


select * from hero where heroname=‘farseer‘;

+--------+------+----------+-------+------+

| teamid | id   | heroname | level | team |

+--------+------+----------+-------+------+

|      7 |   99 | FARSEER  |    10 | D    |

|      7 |   99 | FARSEER  |    10 |      |

|      7 |   99 | FARSEER  |    10 |      |

|      7 |   99 | farseer  |    10 | D    |

+--------+------+----------+-------+------+

当查找farseer时,大小写的就全部查询出来了,如果想严格区分大小写的话在字段前加binary即可

即:


 select * from hero where binary heroname=‘farseer‘;

+--------+------+----------+-------+------+

| teamid | id   | heroname | level | team |

+--------+------+----------+-------+------+

|      7 |   99 | farseer  |    10 | D    |

+--------+------+----------+-------+------+


排序

select *  from hero order by id;

+--------+------+-------------+-------+------+

| teamid | id   | heroname    | level | team |

+--------+------+-------------+-------+------+

|      7 |   99 | FARSEER     |    10 | D    |

|      7 |   99 | FARSEER     |    10 |      |

|      7 |   99 | FARSEER     |    10 |      |

|      7 |   99 | farseer     |    10 | D    |

|      1 |  123 | demohunter  |  NULL | NULL |

|      2 |  124 | blademaster |    10 | B    |

|      3 |  125 | deadknight  |    10 | D    |

|      4 |  126 | faseer      |    10 | B    |

|      4 |  126 | faseer      |    10 | B    |

+--------+------+-------------+-------+------+

默认的排序做的是升序

如果想用降序的得用

select * from hero order by id desc ;

select * from hero order by id desc ;

+--------+------+-------------+-------+------+

| teamid | id   | heroname    | level | team |

+--------+------+-------------+-------+------+

|      4 |  126 | faseer      |    10 | B    |

|      4 |  126 | faseer      |    10 | B    |

|      3 |  125 | deadknight  |    10 | D    |

|      2 |  124 | blademaster |    10 | B    |

|      1 |  123 | demohunter  |  NULL | NULL |

|      7 |   99 | FARSEER     |    10 | D    |

|      7 |   99 | FARSEER     |    10 |      |

|      7 |   99 | FARSEER     |    10 |      |

|      7 |   99 | farseer     |    10 | D    |

+--------+------+-------------+-------+------+

9 rows in set (0.01 sec)


总结:

对库的操作

create,drop,show

对库里建好的表的数据 :

select 

alter

insert

delete

update


mysql笔记

标签:mysql

原文地址:http://391055.blog.51cto.com/381055/1961303

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!