MySQL基础

来源:互联网 发布:rrd环形数据库 编辑:程序博客网 时间:2024/06/06 00:29
mysql 的基础

MySql默认端口号  3306  ;超级用户 root
1)服务的启动与停止
    第一种:通过操作系统控制面板的服务选项进行关闭开启服务
    第二种:net start mysql   cmd命令行开启服务
                net stop  mysql   cmd命令行关闭服务
2)MySql退出
    mysql >exit;
    mysql >quit;
    mysql >\q;
3) MySQL语句规范
    关键字与函数名称全部大写
    数据库名称、表名称、字段名称全部小写
    SQL语句必须以分号结尾
4)库级操作:
    4.1创建数据库 {}必选 [] 可选
       CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [DEFAULT]         CHARACTER SET [=] charset_name
    4.2显示所有数据库
       SHOW{DATABASES | SCHEMAS} [LIKE 'PATTERN' | WHERE expr]
    4.3修改数据库
       ALTER{DATABASE | SCHEMA} [db_name] [DEFAULT] CHARACTER SET  [=] charset_name
    4.4删除数据库
       DROP{DATABASE | SCHEMA} [IF EXISTS] db_name
5)Mysql数据类型  代表不同的信息类型
    int型   (TININT(2^8)  SMALLINT(2^15) NEDIUMINT(2^24) INT(2^32) BIGINT(2^64))
    float型
    double型
    日期时间型  (YEAR TIME DATE DATETIME TIMESTAMP)
    字符类型  (定长CHAR()  变长VARCHAR() TINYTEXT TEXT NEDIUMTEXT LONGTEXT ENUM('value1',...) SET('value1'...))
6)MySQL创建数据表
    6.1 USE命令  打开数据库
    6.2在打开的数据库中创建数据表
       CREATE [IF NOT EXISTS] table_name(column_name(列名称) data_Type(数据类型),......)
    6.3查看数据表
        SHOW TABLES [FROM db_name] [LIKE 'pattern' | WHERE expr]
    6.4查看数据表的结构
        SHOW COLUMNS FROM tbl_name
    6.5记录的插入与查询
        INSERT [INTO] tbl_name[(col_name,...)]VALUES(VAL,...)
        SELECT expr,expr2...FROM tbl_name
    6.6MySQL空值与非空值
        NULL字段可以为空  NOT NULL字段禁止为空
        CREATE table_name(column_name(列名称) data_Type(数据类型) NULL OR NOT NULL,......)
    6.7MySQL自动编号(相当于oracle的自增序列)以及主键primary key
        每张表只能存在一个主键且不可重复,主键能保证记录的唯一性,
        主键自动NOT NULL,自增的字段必须设置成主键
        CREATE table_name(column_name(主键名称) data_Type(整数类型) AUTO_INCREMENT PRIMARY KEY ,......)
    6.8唯一约束(只保证数据的唯一性,空值也只能只有一个为空)
    可以保证记录的唯一性,唯一约束的字段可以为空值(NULL),每张数据库表可以存在多个唯一约束
    CREATE table_name(column_name(唯一键名称) data_Type(整数类型) NOT NULL UNIQUE KEY,......)
    6.9DEFAULT默认约束
       当插入记录时,如果没有明确为字段赋值,则自动赋予默认值。
       CREATE TABLE TEST1(SEX ENUM('1','2','3')DEFAULT '3');
7)约束以及表的修改   
    7.1约束(表级约束  列级约束)
        约束保证数据的完整性和一致性
        外键约束:FOREIGN KEYP
        (1)父表与子表必须使用相同的存储引擎,而且禁止使用临时表
        (2)数据表的存储引擎只能为InnoDB。(默认即是)修改.ini配置文件,default-storage-engine=INN0DB
        (3)外键列和参照列必须具有相似的数据类型。其中数字的长度或是否有符号位必须相同;而字符的长度则可以不同;
        (4)外键列和参照列必须创建索引。如果外键列不存在索引的话,MySQL将自动创建索引。
        CREATE TABLE PROVINCES(
            ID SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
            PNAME VARCHAR(20) NOT NULL
        );
        CREATE TABLE USERS(
            ID SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
            USERNAME VARCHAR(10) NOT NULL,
            PID SMALLINT UNSIGNED,
            FOREIGN KEY (PID) REFERENCES PROVINCES(ID)
        );
    查看参照表的参照列索引(加/G是以列表的形式出现):
    SHOW INDEES FROM PROVINCES/G;

    7.2外键约束的参照操作(在实际项目开发中一般不定义外键约束)
    (1)cascade:从父表删除或更新且自动删除或更新子表中匹配的行。
    (2)set null:从父表删除或更新行,并设置子表中的外键列为NULL。如果选择使用该选项,必须保证子表列没有指定NOT NULL。
    (3)restrict:拒绝对父表的删除或更新操作。
    (4)no action:标准SQL的关键字,在MySQL中与restrict相同。
    7.3表级约束与列级约束
        对一个数据列建立的约束,称为列级约束(可在列前后进行申明)
        对多个数据列建立的约束,称为表级约束(只能在列定义后申明)
    7.4    MySQL修改数据表 添加/删除列
      (1)添加单列
            ALTER TABLE tbl_name ADD [COLUMN] col_name column_definition [FIRST|AFTER col_name]
      (2)添加多列
            ALTER TABLE tbl_name ADD [COLUMN] (col_name column_definition,...)
      (3)删除列
            ALTER TABLE tbl_name DROP [COLUMN] col_name
      (4)删除多列
            ALTER TABLE tbl_name DROP [COLUMN] col_name,DROP [COLUMN] col_name...
      (5)添加/删除主键约束
            ALTER TABLE tbl_name ADD [CONSTRAINT[symbol]] PRIMARY KEY [index_type] (index_col_name,..)
            ALTER TABLE tbl_name DROP PRIMARY KEY
        添加/删除唯一约束
            ALTER TABLE table_name ADD [CONSTRAINT[symbol]] UNIQUE [INDEX|KEY] [index_name] [index_type] (index_col_name,...)
            ALTER TABLE table_name DROP {INDEX|KEY} index_name
         添加/删除外键约束
            ALTER TABLE tbl_name ADD [CONSTRAINT[symbol]] FOREIGN KEY [INDEX|KEY] (index_col_name,...) reference_definition
            ALTER TABLE tbl_name DROP FOREIGN KEY fk_symbol
        添加/删除默认约束
            ALTER TABLE tbl_name ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}
    7.5修改数据表(不要随意操作修改列名  表名)
        (1)修改列定义
           ALTER TABLE tbl_name MODIFY [COLUMN] col_name column_definition [FIRST|AFTER col_name]
        (2)修改数据表
           ALTER TABLE tbl_name RENAME [TO|AS] new_tbl_name
         或 RENAME TABLE tbl_name TO new_tbl_name [,tbl_name2 TO new_tbl_name]...

MySQL数据库记录的操作         
 8)    基础记录的操作
    (1)插入数据(如果自增的字段可以用null替代或者default)
        INSERT [INTO] tbl_name [(col_name,...)] {VALUES|VALUE}({expr|DEFAULT},...),(...),...
        说明:与第一种方式的区别在于。此方法可以使用子查询(SubQuery)
        INSERT [INTO] tbl_name SET col_name={expr|DEFAULT},...
        此方法可以将查询的结果插入到指定的数据表中(将查询的结果插入数据表)
        INSERT [INTO] tbl_name[(col_name,...)]SELECT ...
    (2)更新记录
        单表更新
        UPDATE [LOW_PRIORITY][IGNORE]table_reference SET
        col_name1={expr1|DEFAULT}[,col_name1={expr1|DEFAULT}]...
        [WHERE where_condition]
    (3)删除记录
        单表删除
        DELETE FROM tbl_name [WHERE where_condition]
    (4)SELECT查询记录(可以用AS命名别名)
        SELECT select_expr[,select_expr...]
        [
            FROM table_references
            [WHERE where_condition]
            [GROUP BY{col_name|position} [ASC|DESC],...]
            [HAVING where_condition]
            [ORDER BY{col_name|expr|position}[ASC|DESC],...]
            [LIMIT{[offset,]row_count|row_count|OFFSET offset}]
        ]
    (5)where 条件的使用(在where表达式中,可以使用MySQL支持的函数或运算符)
    (6)GROUP BY查询结果分组
        [GROUP BY{col_name|position(select中第一个检索字段)} [ASC|DESC],...]
    (7)having语句设置分组条件(在分组以后,可以附加分组条件,条件为聚合函数或者查询的字段阈值)
        [HAVING where_condition]
    (8)order by语句对查询结果排序(查询结果按照条件的先后进行排序,条件中间加入逗号隔开)
        [ORDER BY{col_name|expr|position}[ASC|DESC],...]
    (9)limit语句限制查询数据
        [limit{[offset,]row_count|row_count|OFFSET offset}]

子查询与连接
    (1)子查询
        SELECT *FROM t1 WHERE col1=(SELECT col2 FROM t2);
    (2)使用比较运算符的子查询
        =、>、<、>=、<=、!=、<=>
         any、some、all、IN,NOT IN修饰比较运算符  EXIST  NOT EXISTS.
        SELECT *FROM t1 WHERE col1<(SELECT col2 FROM t2);
        INSERT [INTO]tbl_name [(col_name,...)]SELECT ...
    (3)UPDATE table_reference SET col_name1={expr1|DEFAULT}}[col_name2={expr2|DEFAULT2}}]...
        table_reference 表的关系
        inner join,内连接
        left[outer]join,左外连接
        right[outer]join,右外连接
    (4)多表跟新,一步到位
        CREATE TABLE [IF NOT EXISTS] tbl_name [(create_definition,....)]  select_statement
    



















0 0