mysql

作者: 萌面大叔2 | 来源:发表于2016-11-18 15:02 被阅读0次

命令

  • mysql -u root -p密码 //进入mysql
    注意:密码如果写在命令行的时候一定不能有空格。如果使用的系统为linux并且登陆用户名字与MySQL的用户名相同即可不用输入用户名密码,linux默认是以root登陆,windows默认用户是ODBC
    读书籍的表格
  • show databases; //显示所有的数据
  • use mysql; //使用mysql
  • show tables; //显示所有的表格
  • show * from user; //打开user表格,查看表格里的内容
  • \q //退出

创建一个数据,表格,并在表格中插入一列showtime

mysql> create database test01;    //创建一个数据test01
Query OK, 1 row affected (0.07 sec)

mysql> use test01;    //使用test01
Database changed
mysql> show tables;  //显示里面的表格
Empty set (0.01 sec)

mysql> create table data11(showtime time);//创建表格data11,列名为showtime
Query OK, 0 rows affected (0.34 sec)

mysql> insert into data11 values('11:11:11'),('11:11'),(111111);//在data11表格里填数据
Query OK, 3 rows affected (0.06 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> select * from data11;//显示表格data11
+----------+
| showtime |
+----------+
| 11:11:11 |
| 11:11:00 |
| 11:11:11 |
+----------+
3 rows in set (0.04 sec)

mysql> 

运行结果:


图片1.png
插入数据(两种方式)
图片2.png 图片3.png

主键与外键

数据表之间的关联/引用关系是依靠具体的主键(primary key)和外键(foreign key)建立起来的。
主键:帮助MySQL以最快的速度把一条特点的数据记录的位置确定下来。

主键必须是唯一的
主键应该是紧凑的,因此整数类型比较适合
外键:引用另外一个数据表的某条记录。
外键列类型尽可能与主键列类型保持一致
外键列应该加上NOT NULL

  • 主键(唯一的)
create table student(
    sid int not null auto_increment,//自动增加sid不能为空
    name varchar(20) not null,
    primary key(sid)//主键
);
4.PNG 5.PNG
  • 外键(自动检查外键是否匹配,仅适用InnoDB)
create table score(
    cid int not null auto_increment primary key,
    score int,
    sid int,
    foreign key(sid) references student(sid)//外键
);
捕获.PNG

内连接:

  • create table students(sname char(20),sno int);//创建学生表
  • create table sc(studentsid int,courseid int,grade int);//创建sc表
  • insert into students values('mcf',1),('fdd',2),('ikv',3),('hjjd',4);//在学生表中插入数据
  • insert into sc values(1,1,97),(2,1,66),(2,2,57),(3,5,64),(4,6,33);//在sc表中插入数据
  • select * from sc;//显示sc表中的内容
  • select * from students;//显示学生表中的内容
  • select students.sname,sc.courseid,sc.grade from students inner join sc on students.sno =sc.studentsid;//内连
![Uploading 7_523478.PNG . . .] 7.PNG

外连接

  • select students.sname,sc.courseid,sc.grade from students right join sc on students.sno =sc.studentsid;
  • select students.sname,sc.courseid,sc.grade from students left join sc on students.sno =sc.studentsid;

复制表格里数据,创建新表

  • create table xxx select sname from students;//把学生表里的名字复制到xxx表格中
  • create table sss select students.sname,sc.courseid,sc.grade from students left join sc on students.sno =sc.studentsid;//把数据复制到sss表格中
11.PNG 12.PNG

显示属性

  • desc student;//显示学生表格的属性


    22.PNG

增加,改名

add 列名 建表语句 [first | after 列名]
可以为表添加一列,如果没指定first或者after,则在列尾添加一列,否则在指定列添加新列
add primary key (列名)
为表添加一个主键,如果主键已经存在,则出现错误
add foreign key(列名) references 表名(列名)�为表添加一个外键
alter 列名 set default 默认值
可以更改指定列默认值
change 旧列名 新列名 <建表语句> [first | after 列名]
可以更改列类型和列名称,如果原列的名字和新列的名字相同
modify 列名 <建表语句> [first | after 列名]
和change的作用相同
drop 列名 //可以删除一列
drop primary key //可以删除主键
engine 类型名 //可以改变表类型
rename as 新表名 //可以将表名更改

举例1:
向people表中添加字段address2,类型为varchar,最大长度为100
alter table people add address2 varchar(100);
**举例2: **
将people表中的name列默认值改为100:
alter table people alter name set default 100;
举例3:
向student表增加“入学时间”列,其数据类型为日期型。
alter table student add scome date;
注:无论基本表中原来是否已有数据,新增加的列一律为空值。
举例4:
将年龄的数据类型改为半字长整数。
alter table student modify sage smallint;
注:修改原有的列定义有可能会破坏已有数据

  • alter table student add sgrade int after name;//在学生表中name列后面加sgrade列
  • alter table student change name sname varchar(20) after sid;//把学生表中的name名字改成sname


    2.PNG
1.PNG

用C++打开mysql里的表格

#include<mysql/mysql.h>
#include<iostream>
#include<string>
#include<stdlib.h>
using namespace std;
MYSQL *conn;
MYSQL_RES *res;
MYSQL_ROW row;
int main()
{
    const char *server = "localhost";
    const char *user = "root";
    const char *password = "123";
    const char *database = "test01";
    conn =mysql_init(NULL);
    if(!mysql_real_connect(conn,server,user,password,database,0,NULL,0))
    {
        cout<<"connect error "<<endl;
        return 0;
    }
    mysql_set_character_set(conn,"utf8");
    if(mysql_query(conn,"select * from students"))
    {
        cout<<"query error"<<endl;
        return 0;
    }
    res=mysql_use_result(conn);
    while ((row=mysql_fetch_row(res))!=NULL)
    {
        cout<<row[0]<<" "<<row[1]<<endl;
    }
    mysql_free_result(res);
    mysql_close(conn);
    return 0;
}
3.PNG

相关文章

网友评论

      本文标题:mysql

      本文链接:https://www.haomeiwen.com/subject/fhldpttx.html