mysql

命令

  • 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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,133评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,682评论 3 390
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,784评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,508评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,603评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,607评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,604评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,359评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,805评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,121评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,280评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,959评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,588评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,206评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,442评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,193评论 2 367
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,144评论 2 352

推荐阅读更多精彩内容