mysql学习笔记

2012/04/06 2397点热度 0人点赞 0条评论

 数据库分类

  * 网状型数据库

  * 层次性数据库

  * 关系数据库

 常用关系型数据库

DB2: IBM的

       oracle:Oracle公司

       mssql server: Microsoft 公司

       mysql : 瑞士MySQL AB,现在由oracle收购

mysql常用语法:

cmd中链接mysql的方法

  连接本地  mysql -u用户名 -p密码

  例如:  mysql  -uroot -p123456   链接用户名是root,密码是123456的本地数据库

  连接远程  mysql -h地址  -u用户名 -p密码

 例如:   mysql -h192.168.1.18  -uroot  -p123456

 修改用户名  

  mysqladmin -u用户名 -u旧密码  password 新密码

 显示数据库

show databases

 使用数据库

use 数据库名

 显示数据库中所有的表

show tables

 显示表结构

desc  表名  

 #注释

 创建表:

  create table 表名 (  列名1 类型,列名2 类型)

mysql 数据类型

  char(size)  定长字符,0-255

      varchar(size)  变长字符 0-255

      date 日期数据 mysql用‘YYYY-MM-DD’格式检索和显示DATE

      datetime 日期数据“YYYY-MM-DD HH:MM:SS”

      int  整型

      double[(s,p)] 数字型,可存放实型和整型,精度p,和范围s

           s:整数部分的个数+小数部分的个数

           p:小数本分的位数

          double(5,2)  最大是999.99

          double(5)    最大是99999

          double(5,0)  最大是99999

     BlOB (oracle) 存放图形,声音和影像,二进制对象,0-65535字节

     text  存放大文本文件, 0-65535

查询

 创建练习表

#员工信息表
CREATE TABLE employees(
 employee_id                INT,             #员工编号
 first_name                 VARCHAR(20),     #员工姓
 last_name                  VARCHAR(25),     #员工名
 email                      VARCHAR(25),     #mail地址
 phone_number               VARCHAR(20),     #电话
 hire_date                  DATE,            #雇佣时间
 job_id                     VARCHAR(10),     #职务
 salary                     DOUBLE(8,2),     #月薪
 commission_pct             DOUBLE(2,2),     #奖金的百分比
 manager_id                 INT,             #管理者编号
 department_id              INT              #部门编号
);
                                                        
#部门信息表
CREATE TABLE departments(
  department_id             INT,            #部门编号
  department_name           VARCHAR(30),    #部门名称
  manager_id                INT,            #管理者编号
  location_id               INT             #部门位置编号
);
                                                        
#部门地理位置表
CREATE TABLE locations(
  location_id               INT,             #地区编号
  street_address            VARCHAR(40),    #街道名
  postal_code               VARCHAR(12),    #邮编
  city                      VARCHAR(30),    #城市
  state_province            VARCHAR(25),    #省市
  country_id                CHAR(2)         #国家编号
);

SELECT {*, COLUMN [alias],...}  FROM TABLE

       select   选择查询列表 from 提供数据源(表,视图或其他的数据源)

 查询表中的所有数据,select * 和select 列名效果一样

SELECT * FROM employees
SELECT employee_id,first_name,last_name,email,phone_number,hire_date,job_id,salary,commission_pct,manager_id,department_id FROM employees

  CONCAT 连接两个字段合并为一个

SELECT employee_id,CONCAT(first_name,last_name),job_id,salary*12 FROM employees

     使用别名的语法结构: [字段名  别名]或者[字段名 as 别名]

SELECT CONCAT(first_name,last_name)  姓名 ,salary  月薪 FROM employees

      定义字段别名强制大小写 给别名加上"",默认显示的是小写

SELECT CONCAT(first_name,last_name)  "NAME" ,salary  "SAL"  FROM employees

   带有限制条件的查询

# sql语句中    字符串和日期要用单引号扩起来
#                     数字类型直接书写
#使用WHERE子句限定返回的记录
     SELECT    [DISTINCT] {*, COLUMN [alias], ...}     FROM    TABLE
     [WHERE    CONDITION(s)];
#  WHERE子句在 FROM 子句后
#查询职务='总经理'的员工
      SELECT  employee_id,first_name,last_name,department_id
      FROM employees
      WHERE job_id='总经理'
#其它的比较运算符  
#使用BETWEEN运算符显示某一值域范围的记录,这个操作符最常见的使用在数字类型数据的范围上,但对于字符类型数据和日期类型数据同样可用
#包含开始和结尾
#查询工资2900-3600的员工信息
    SELECT  *
    FROM employees
    WHERE salary BETWEEN 2900 AND 3600
                                     
#使用IN运算符获得匹配列表值的记录,在IN操作符后跟着一个值的列表,可以应用日期,字符串数据类型
                                       
#查询部门是10和20的员工信息
    SELECT *
    FROM employees
    WHERE department_id IN(10,20)
#使用LIKE运算符执行通配查询 查询条件可包含文字字符或数字
       (%) 可表示零或多个字符
       (_)可表示一个字符   
                                    
#查询员工姓名包含c的员工信息
    SELECT * FROM employees WHERE first_name LIKE '%c%'
                                 
#使用not in运算符  查询职务不是"总经理"或  销售经理 的员工信息
   SELECT * FROM employees
   WHERE job_id NOT IN('总经理','销售经理')
#增加排序
       SELECT    [DISTINCT] {*, COLUMN [alias], ...}     FROM   TABLE
       [WHERE   CONDITION(s)]  ORDER BY  字段名 排序方式
                                        
       ASC: 升序,缺省
       DESC: 降序

运算符优先级

  1)所有的的比较运算符

  2) not

  3) and

  4) or

DML语句  insert update delete

DDM语句 针对数据库和表的操作

增加条件

使用列的别名排序

     desc 表名 查询表的结构

     distinct  去掉重复行

        select distinct job form emp     去掉重复的job,并返回查到的job

        select distinct deptno,job from emp         去掉重复的deptno,job字段组合

        select distinct * from emp   表中所有字段组合不重复

多表查询,

  等值连接 多个有关联的表

  自连接  基于一个表的等值连接

数据操作语言

约束

 `主键约束:非空且唯一

       一个表中只允许有一个主键

       主键是表中能够唯一确定一个行数据的字段

       主键字段可以使单字段或者多字段的组合

1 在创建表的同时创建 列级约束

    primary key  列级约束

2 在创建表的同时创建 表级约束

  语法结构

     constraint 约束的名称[自定义]  约束的类型(约束的字段1,约束的字段2)

3 在表的外部定义

  语法

     alter table 表名

 add constraint 约束的名称  约束的类型(约束的字段)

4  组合主键  在建表的同时创建

    CONSTRAINT 约束名称 primary key(约束字段1,约束字段2)

5  组合主键

   语法

  alter table 表名

  add constraint 约束名称  primary key(字段1,字段2)

外键约束

 外键是构建一个于一个表的两个字段或者两个表的两个字段之间的关系

 子表的外键列的值必须在主表的主键的范围内或者为空

 1语法

    constraint 约束的名称  foreing key(子表的字段) references 主表(主表的主键)

 2语法

    alter table 表名

add constraint 约束的名称  foreing key(子表的字段) references 主表(主表的主键)

mysqldump 备份数据库

 mysqldump -uroot -proot test > d:/a.sql

恢复数据库

 mysql -uroot -proot test < D:/a.sql

yxkong

这个人很懒,什么都没留下

文章评论