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

数据库及mysql

时间:2015-06-17 18:28:17      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:replace   control   管理系统   oracle   create   

DBMS:Database Management System    数据管理系统

RDBMS:Relational Database Management System 关系数据管理系统

数据的组织结构:

    层次型

    网状型

    关系型

RDBMS基本功能:

1、数据库创建、删除

2、创建表、删除表、修改表

3、索引的创建、删除

4、用户和权限

5、数据增、删、改

6、查询


DML:Data Manapulate Language:数据操作语言

    insert,replace,update,delete

DDL:Data Definltion Language:数据定义语言

    create,alter,drop

DCL:Data control Language :数据控制语言

    Grant revoke select

    

RDBMS软件:

    Oracle,Sybase,Infomix,SQL Server,DB2

    MySQL,PostgreSQL,EnterpriseDB(有免费版,有开源版本)

    MariaDB-->mysql分支

    percona MySQL-->开源,性能比mysql要好

    

DBMS的好处:

    1、数据管理的独立性

    2、有效地完成数据存取

    3、数据完整性和安全性

    4、数据集中管理

    5、并发存储与故障恢复

    6、减少应用程序开发时间


DBMS基本组件:

    1、分析器

    2、计划执行器

    3、优化器

    4、文件的存取方法

    5、缓存器

    6、磁盘空间管理器

    7、故障恢复管理器

    8、事务管理器

    9、锁管理器


MySQL版本:

    Commulity Edtion

    Enterprise Edtion

MySQL软件格式:

    软件包管理器特有的格式

        rpm包

    通用二进制格式,类似绿色软件,也包含msi,exe的格式

    源程序

mysql.x86_64                        #mysql客户端                  
mysql-bench.x86_64                  #mysql性能测试       
mysql-connector-java.noarch         #mysql连接驱动        
mysql-connector-odbc.x86_64         #mysql连接驱动       
mysql-devel.i686                    #开发       
mysql-devel.x86_64                                
mysql-libs.i686                     #库文件    
mysql-server.x86_64                 #mysql服务端程序     
mysql-test.x86_64                   #测试     
php-mysql.x86_64                    #php连接mysql驱动

安装后的二进制程序
mysql:客户端

    -u USERNAME

    -p 密码

    -h MYSQL_SERVER

        linux:Socket,Socket文件路径为:/var/lib/mysql/mysql.sock

        windows:共享内存(memory)

用户:Username@HOST(HOST指哪个客户端地址来登陆MYSQL服务)

    mysql客户端:

        交互式模式

        批处理模式

            执行mysql脚本

交互式模式中的命令类别:

    客户端命令

    服务端命令

        必须使用语句结束符,默认是分号“;”

mysqld:服务端


端口:

    tcp/3306 

用户和组:

mysql,mysql


mysql数据库存放目录:

    /var/lib/mysql/


mysql初始化:

    建立mysql数据库,包含数据库的源数据


关系数据库对象:

    库

    表

    索引

    视图

    约束

    存储函数

    触发器

    游标

    用户

    权限

    事务


表:

    行,列

    表就是一个实体,实体集

        行:row

        列:field,fidld也叫column

字段名称,数据类型,类型修饰(可以实现限制或者约束)

    数据类型

        字符

            CHAR(n),存n个占用空间为n,不足n个,也占用n个(默认不区分大小写),最多256个字符

            VARCHAR(n):存n个占用空间为n,不足n个,占用实际使用数+1个(默认不区分大小写)

                        最多存65536个字符

            BINARY(n):与CHAR类似,区分大小写

            VARBINARY(n):与VARCHAR类似,区分大小写

            TEXT(n):不区分大小写

            BLOB(n):区分大小写,TEXT与BLOB类似,只是区分大小写

            

        数值

            精确数值

                整型

                    TINYINT:一个字节,最多表示范围:正128到负127,或者0-255

                    SMALLINT:两个字节

                    MEDIUMINT:三个字节

                    INT:四个字节

                    BIGINT:八个字节

                    修饰符:UNSIGNED,无负数



                            NOT NULL

                十进制

                    DECIMAL

            近似数值

                浮点型

                    FLOAT

                    DOUBLE

            日期时间

                    DATE

                    TIME

                    DATETIME

                    STAMP

            布尔

                    0

                    1

            内置:ENUM,SET

DDL:

    CREATE:创建

    ALTER:修改

    DROP:删除

DML:

    INSERT

    UPDATE

    DELETE

DCL:

    GRANT

    REVOKE

创建数据库:

    CREATE DATABASE db_name

mysql> CREATE DATABASE test_db;
Query OK, 1 row affected (0.00 sec)
mysql> CREATE DATABASE IF NOT EXISTS test_db;   #如果不存在就创建test_db
Query OK, 1 row affected, 1 warning (0.00 sec)

删除数据库:

    DROP DATABASE test_db

mysql> DROP DATABASE test_db;
Query OK, 0 rows affected (0.00 sec)

创建表

    CREATE TABLE tb_name(co11,co12,...);

mysql> create table students(Name CHAR(20) NOT NULL,Age TINYINT UNSIGNED,Gender CHAR(1) NOT NULL);
Query OK, 0 rows affected (0.04 sec)

#创建students表,一行内容为:Name 字符型不超过20个字符,不允许为空。年龄,一个字节,不能为负数。性别,字符型,不允许为空

查看库中的表

    show tables from db_name

mysql> show tables from mydb;
+----------------+
| Tables_in_mydb |
+----------------+
| students       |
+----------------+
1 row in set (0.00 sec)

查看表的结构:

    desc table_name 

mysql> desc students;
+--------+---------------------+------+-----+---------+-------+
| Field  | Type                | Null | Key | Default | Extra |
+--------+---------------------+------+-----+---------+-------+
| Name   | char(20)            | NO   |     | NULL    |       |
| Age    | tinyint(3) unsigned | YES  |     | NULL    |       |
| Gender | char(1)             | NO   |     | NULL    |       |
+--------+---------------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

删除表

    drop table tb_name;

mysql> drop table students;
Query OK, 0 rows affected (0.00 sec)

修改表:

    ALTER TABLE tb_name

        MODIFY:修改

        CHANGE:改变

        ADD:添加

        DROP:删除

mysql> alter table students add course varchar(100);  #在students中添加course字段
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0
#修改表中的course为Course,必须再次指定字段类型,并调整到Name后面
mysql> alter table students change course Course varchar(100) after Name;
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

在客户端设置默认数据库:

mysql> USE test;
Database changed

插入数据

    insert into tb_name (col1,col2,...) VALUES|VALUE(‘STRING‘,NUM,...);

mysql> insert into students (Name,Gender) value (‘LingHuchong‘,‘M‘),(‘XiaoLongnv‘,‘F‘);
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0
mysql> select * from students;
+-------------+--------+------+--------+
| Name        | Course | Age  | Gender |
+-------------+--------+------+--------+
| LingHuchong | NULL   | NULL | M      |
| XiaoLongnv  | NULL   | NULL | F      |
+-------------+--------+------+--------+
2 rows in set (0.00 sec)
mysql> insert into students values (‘xiaoxiangzi‘,‘HaMogong‘,57,‘M‘);
Query OK, 1 row affected (0.00 sec)
mysql> select * from students;
+-------------+----------+------+--------+
| Name        | Course   | Age  | Gender |
+-------------+----------+------+--------+
| LingHuchong | NULL     | NULL | M      |
| XiaoLongnv  | NULL     | NULL | F      |
| xiaoxiangzi | HaMogong |   57 | M      |
+-------------+----------+------+--------+
3 rows in set (0.00 sec)

修改数据:

    update tb_name SET column=value WHERE 

mysql> update students set Course=‘pixiejianfa‘ where Name=‘XiaoLongnv‘;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0
mysql> select * from students;
+-------------+-------------+------+--------+
| Name        | Course      | Age  | Gender |
+-------------+-------------+------+--------+
| LingHuchong | NULL        | NULL | M      |
| XiaoLongnv  | pixiejianfa | NULL | F      |
| xiaoxiangzi | HaMogong    |   57 | M      |
+-------------+-------------+------+--------+
3 rows in set (0.00 sec)

where条件方法:

    选择:指定以某字段做为搜索码,做逻辑比较,筛选符合条件的行;,选择行

    投影:选择列

mysql> select Name,Course from students where Gender=‘M‘;   #既选择又投影的方法
+-------------+----------+
| Name        | Course   |
+-------------+----------+
| LingHuchong | NULL     |
| xiaoxiangzi | HaMogong |
+-------------+----------+
2 rows in set (0.00 sec)

删除数据:

    delete from tb_name where CONDITION;

mysql> delete from students where Course=‘HaMogong‘;
Query OK, 1 row affected (0.00 sec)

mysql> select * from students;
+-------------+-------------+------+--------+
| Name        | Course      | Age  | Gender |
+-------------+-------------+------+--------+
| LingHuchong | NULL        | NULL | M      |
| XiaoLongnv  | pixiejianfa | NULL | F      |
+-------------+-------------+------+--------+
2 rows in set (0.00 sec)

select用法:

    select 字段 from tb_name where CONDITION;

    *:所有字段

    where:没有指定where,表示所有行


DCL:

    create user ‘USERNAME‘@‘HOST‘identified by ‘PASSWD‘;

mysql> create user ‘jerry‘@‘%‘ identified by ‘jerry‘;  #创建用户,以任意主机登陆
Query OK, 0 rows affected (0.00 sec)

mysql> show grants for ‘jerry‘@‘%‘;   #查看用户权限
+------------------------------------------------------------------------------------------------------+
| Grants for jerry@%                                                                                   |
+------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO ‘jerry‘@‘%‘ IDENTIFIED BY PASSWORD ‘*09FB9E6E2AA0750E9D8A8D22B6AA8D86C85BF3D0‘ |
+------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)


    drop user ‘USERNAME‘@‘HOST‘;

    

    HOST:

        IP

        HOSTNAME

        NETWORK;

        通配符:

            _:匹配任意单个字符,172.16.0._  

            %:匹配任意字符:jerry@‘%‘

用户授权:

    grant pri1,pri2,...on db_name.tb_name to ‘username‘@‘host‘ [identified by ‘passwd‘];

#将mydb下的所有表的所有权限授权给jerry@%用户
mysql> grant all privileges on mydb.* to ‘jerry‘@‘%‘;  
Query OK, 0 rows affected (0.00 sec)

mysql> show grants for ‘jerry‘@‘%‘;   
+------------------------------------------------------------------------------------------------------+
| Grants for jerry@%                                                                                   |
+------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO ‘jerry‘@‘%‘ IDENTIFIED BY PASSWORD ‘*09FB9E6E2AA0750E9D8A8D22B6AA8D86C85BF3D0‘ |
| GRANT ALL PRIVILEGES ON `mydb`.* TO ‘jerry‘@‘%‘                                                      |
+------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)


取消权限

    pevoke pri1,pri2,... on db_name.tb_name form ‘username‘@‘HOST‘;

    


练习:

MySQL基础操作练习(所属的库叫做testdb):


新建如下表(包括结构和内容):


ID    Name          Age     Gender     Course

1     Ling Huchong   24      Male       Hamogong

2     Huang Rong    19      Female     Chilian Shenzhang

3     Lu Wushaung   18      Female     Jiuyang Shenggong

4     Zhu Ziliu     52      Male       Pixie Jianfa

5     Chen Jialuo   22      Male       Xianglong Shiba Zhang


2、完成如下操作

(1)找出性别为女性的所有人;

(2)找出年龄大于20的所有人;

(3)修改Zhu Ziliu的Course为Kuihua Baodian; 

(4)删除年龄小于等于19岁的所有人;

(5)创建此表及所属的库;

(6)授权给testuser对testdb库有所有访问权限;


本文出自 “魏镇坪” 博客,请务必保留此出处http://leozhenping.blog.51cto.com/10043183/1662801

数据库及mysql

标签:replace   control   管理系统   oracle   create   

原文地址:http://leozhenping.blog.51cto.com/10043183/1662801

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